将字典维度减少到1

时间:2015-08-14 20:45:47

标签: python dictionary

我想将几个字典合并到一个--link mongodb中。为了能够做到这一点,所有字典都需要具有1的维度。如何将以下字典的维度减少到1但是它仍然是字典?如果字典项有多个条目,则应该简单地加入。因此pd.DataFrame应该成为myFunds

'2.0 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 } 中保存对象的所有属性。为此,我DataFrame给了我一个字典,但并非所有条目都有相同的维度,所以我不能vars(Object)因为我收到错误。这就是我需要先将DataFrame(vars(Object))转换为一维字典的原因。但它需要保持字典,否则我无法将其转换为vars(Object)

1 个答案:

答案 0 :(得分:2)

您可以遍历字典中的项目,然后使用str.join()将它们展平。

我们基本上告诉它迭代字典值中的每个键/值对,将其转换为字符串(因为您不能连接intstring),并且然后把它放回sictionary

函数funcfrom here,它的作用是确保我们总是有一个可迭代的项目

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'
}