Python 将字典维度减少到1

Python 将字典维度减少到1,python,dictionary,Python,Dictionary,我有几本字典想合并成一个pd.DataFrame。为了做到这一点,所有字典的维数都必须为1。如何将以下词典的维数减少到1,但使其保持为词典?在一个字典项有多个条目的情况下,应该简单地将其联接起来。所以myFunds应该变成'2.0.0' h = { 'gameStage': 'PreFlop', 'losses': 0, 'myFunds': [2.0, '0.0'], 'myLastBet': 0, 'peviousRoundCards': ['2S',

我有几本字典想合并成一个
pd.DataFrame
。为了做到这一点,所有字典的维数都必须为1。如何将以下词典的维数减少到1,但使其保持为词典?在一个字典项有多个条目的情况下,应该简单地将其联接起来。所以
myFunds
应该变成
'2.0.0'

h = {
    'gameStage': 'PreFlop',
    'losses': 0,
    'myFunds': [2.0, '0.0'],
    'myLastBet': 0,
    'peviousRoundCards': ['2S', 'QS'],
    'previousCards': ['2S', 'QS'],
    'previousPot': 0.03,
    'wins': 0
}

更确切地说,我的问题是:我想将对象的所有属性保存在
数据帧中。为此,我做了
vars(Object)
,这给了我一个字典,但不是所有条目都有相同的维度,所以我不能做
DataFrame(vars(Object))
,因为我得到了一个错误。这就是为什么我需要首先将
vars(Object)
转换为一维字典。但是它需要保留为一个字典,否则我无法将其转换为一个
数据帧

您可以迭代字典中的项目,并使用

我们基本上告诉它迭代字典值中的每个键/值对,将其转换为字符串(因为不能将
int
string
连接起来),然后将其放回字典中

函数
func
是,它所做的是确保我们始终有一个iterable项

from collections import Iterable

def func(x):
    #use str instead of basestring if Python3
    if isinstance(x, Iterable) and not isinstance(x, basestring):
        return x
    return [x]

for key, val in h.items():
    h[key] = " ".join([str(ele) for ele in func(val)])
h
的输出变为:

{
  'gameStage': 'PreFlop', 
  'losses': '0', 
  'myFunds': '2.0 0.0', 
  'myLastBet': '0',
  'peviousRoundCards': '2S QS', 
  'previousCards': '2S QS',
  'previousPot': '0.03',
  'wins': '0'
}

您的问题标题与问题内容无关。是否要加入列表值?相关问题:,是,我要加入值。请看修改后的问题。我认为您不需要理解列表。您可以将其设置为生成器:
“”。join(str(ele)表示val中的ele)
某些值不是列表。name错误:全局名称“Iterable”不是defined@Nicolas您需要确保从集合导入Iterable时执行
,这样会更快,python对传入的对象执行两次传递,因此,如果传递生成器,无论如何都将生成一个列表,因此使用gen-exp没有真正的优势,并且最终速度会变慢