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没有真正的优势,并且最终速度会变慢