【发布时间】:2018-02-24 08:09:18
【问题描述】:
我有 python 3.5。试图合并两个嵌套字典并将结果集设置为两个字典的“union all”。这是我的代码
from collections import defaultdict, Counter
import json
from itertools import chain
d = ''
d1 = ''
d1 = defaultdict(lambda: defaultdict(dict))
def CreateDataSet(koin, order, key, value):
global d, d1
d = defaultdict(lambda: defaultdict(dict))
d[koin][order][key] = value
d1 = dict(chain(d.items(), d1.items()))
CreateDataSet('BTC', 'Buy', 'BTZeB', 76000)
CreateDataSet('LTC', 'Buy', 'LTKoB', 6000)
CreateDataSet('LTC', 'sell', 'LTZeS', 6050)
CreateDataSet('OMG', 'Buy', 'OGDeB', 9000)
CreateDataSet('OMG', 'Buy', 'OGKoB', 9100)
print(json.dumps(d1))
我期待这样的结果 -
{
"BTC": {
"Buy": {
"BTZeB": 76000
}
},
"LTC": {
"Buy": {
"LTKoB": 6000
},
"sell": {
"LTKoS": 6050
}
},
"OMG": {
"Buy": {
"OGDeB": 9000,
"OGKoB": 9100
}
}
}
但是,我是这样的-
{
"LTC": {
"Buy": {
"LTKoB": 6000
}
},
"OMG": {
"Buy": {
"OGDeB": 9000
}
},
"BTC": {
"Buy": {
"BTZeB": 76000
}
}
}
任何其他方法将不胜感激。同时,我也在试图弄清楚如何使用 for 循环来完成。
【问题讨论】:
-
您的预期结果是由具有重复键的字典组成的!!!
-
@Jean-FrançoisFabre 是的。或者,如果我可以在一次设置中整理相同键的值。
-
@liliscent 我也试过这个 - d1 = {**d, **d1} 。但同样的输出。
-
我建议你 edit 你的问题然后显示预期的输出
-
@Jean-FrançoisFabre 完成
标签: python python-3.x dictionary merge