使用相同的键合并python词典

时间:2017-04-12 11:16:36

标签: python dictionary key-value

我有一个具有相同键的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',
  ...

其中键增加到所有词典中的实例数。

提前致谢。

4 个答案:

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