我有一个具有相同键的Python词典列表。我想从列表中的字典创建一个大字典。问题是我不能使用update来创建一个新的,因为因为键是相同的,所以在这个过程中会覆盖每个键的值。我的清单样本是:
[{0: u'ChIJIxtmpVdCQg0R_TCH5ttvqC0',
1: u'ChIJ2RMaMThvQg0R_6hmMXFiG_M',
...
195: u'ChIJv1KfnmMpQg0R5iC9EmaXN6M',
196: u'ChIJd0vQCiOEQQ0RasOKsxksdys'},
{0: u'ChIJIxtmpVdCQg0R_TCH5ttvqC0',
1: u'ChIJ2RMaMThvQg0R_6hmMXFiG_M',
2: u'ChIJQ3PGOWlfQg0RkV-a6JQdrFs',
3: u'ChIJ-TjccjhvQg0RVQmnPNgAJv4',
...
100: u'ChIJN7zqEhgmQg0R-NzvqSYG_Ds',
101: u'ChIJPTR-xaYoQg0RUrX7K8kQhU4',
102: u'ChIJV_pHsIsoQg0ReGKLBXDqOc8',
103: u'ChIJtXpyqps7Qg0RXq37551oP4o',...
我想要的是一个更大的以下形式的字典:
{0: u'ChIJIxtmpVdCQg0R_TCH5ttvqC0',
1: u'ChIJ2RMaMThvQg0R_6hmMXFiG_M',
2: u'ChIJQ3PGOWlfQg0RkV-a6JQdrFs',
3: u'ChIJ-TjccjhvQg0RVQmnPNgAJv4',
...
195: u'ChIJv1KfnmMpQg0R5iC9EmaXN6M',
196: u'ChIJd0vQCiOEQQ0RasOKsxksdys', ###HERE STARTS THE NEW DICT!!
197: u'ChIJIxtmpVdCQg0R_TCH5ttvqC0',
198: u'ChIJ2RMaMThvQg0R_6hmMXFiG_M',
199: u'ChIJQ3PGOWlfQg0RkV-a6JQdrFs',
...
其中键增加到所有词典中的实例数。
提前致谢。
答案 0 :(得分:1)
尝试这样的事情:
vals = []
for d in list_of_dicts:
vals.extend(d.values())
max_dict = dict(enumerate(vals))
答案 1 :(得分:1)
您可以简单地将字典的当前大小检索为每个元素的关键字。
myDict = {}
for dictionary in dictionaries:
for key in dictionary:
myDict[len(myDict)] = dictionary[key]
答案 2 :(得分:0)
正如你所说,如果键是连续整数的意义上的键,并且你想要在第二个字典中附加值,即忘记它们的原始键,那么这可能有效:< / p>
dict(enumerate(list(dict1.values()) + list(dict2.values())))
如果您有两个以上的源词典,则需要一些额外的魔法:
dict(enumerate([item for sublist in [list(d.values()) for d in dicts] for item in sublist]))
(外部列表理解从已接受的答案复制到此问题:Making a flat list out of list of lists in Python)
答案 3 :(得分:0)
要将dict2合并到dict1中,这应该可以正常工作
dict1 = {1: 'a', 2: 'b'}
dict2 = {1: 'c', 2: 'd'}
max_key_in_dict1 = max(dict1.keys())
for key in dict2.keys():
dict1[key+max_key_in_dict1] = dict2[key]
del dict2
然后dict1:
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}