如何在Python中的一个字典中连接多个列表?

时间:2018-01-22 22:54:55

标签: python dictionary for-loop

我有一个OrderedDict,我需要在一个字典中合并同一个城市的多个值。 OrderedDict如下:

print(OrderedDict)
  

OrderedDict([' UF',' New York'),(' Total',44.13),(' DEF', 9.5)])

     

OrderedDict([' UF',' LA'),(' Total',54.13),(' DEF',1.0 )])

     

OrderedDict([' UF',' New York'),(' Total',12.01),(' DEF', 0.4)])

     

...

所以我需要一本新词典,其中包含"纽约"的所有价值。总结为一个条目:

for data in OrderedDict:
    newDict = {"UF": data['UF'], 'DEF' : data["DEF"] , 'N_DEF' : (data["Total"] - data["DEF"]) , 'Total' : data["Total"] }

这里我甚至没有做总和而且我已经遇到麻烦了,这里的for循环只返回newDict中的1个条目,好像它没有遍历OrderedDict洞。

print(newDict)
  

{" DEF" :9.5," N_DEF" :34,63," Total" :44.13," UF" :"纽约"}

请帮助!!!!

谢谢大家!!

1 个答案:

答案 0 :(得分:0)

在for循环外初始化一个空的dict,然后使用每个输入数字的值更新它。

from collections import OrderedDict

l=[OrderedDict([('UF' , 'New York'), ('Total', 44.13), ('DEF', 9.5)]),
   OrderedDict([('UF' , 'LA'), ('Total', 54.13), ('DEF', 1.0)]),
   OrderedDict([('UF' , 'New York'), ('Total', 12.01), ('DEF', 0.4)])]

d = {}
for od in l:
    city = od['UF']
    if city not in d:
        d[city] = od
    else:
        d[city]['DEF'] += od['DEF']
        d[city]['Total'] += od['Total']

print(d)
# {'New York': OrderedDict([('UF', 'New York'), ('Total', 68.15), ('DEF', 10.3)]), 
#  'LA': OrderedDict([('UF', 'LA'), ('Total', 54.13), ('DEF', 1.0)])}