使用另一个列表中的键值对更新python词典列表

时间:2012-05-15 00:15:59

标签: python list dictionary

假设我有以下python词典列表:

dict1 = [{'domain':'Ratios'},{'domain':'Geometry'}]

和列表如:

list1 = [3, 6]

我想更新dict1或创建另一个列表,如下所示:

dict1 = [{'domain':'Ratios', 'count':3}, {'domain':'Geometry', 'count':6}]

我该怎么做?

4 个答案:

答案 0 :(得分:22)

>>> l1 = [{'domain':'Ratios'},{'domain':'Geometry'}]
>>> l2 = [3, 6]
>>> for d,num in zip(l1,l2):
        d['count'] = num


>>> l1
[{'count': 3, 'domain': 'Ratios'}, {'count': 6, 'domain': 'Geometry'}]

另一种方法,这次使用的列表理解不会改变原文:

>>> [dict(d, count=n) for d, n in zip(l1, l2)]
[{'count': 3, 'domain': 'Ratios'}, {'count': 6, 'domain': 'Geometry'}]

答案 1 :(得分:6)

你可以这样做:

for i, d in enumerate(dict1):
    d['count'] = list1[i]

答案 2 :(得分:3)

你可以这样做:

# list index
l_index=0

# iterate over all dictionary objects in dict1 list
for d in dict1:

    # add a field "count" to each dictionary object with
    # the appropriate value from the list
    d["count"]=list1[l_index]

    # increase list index by one
    l_index+=1

此解决方案不会创建新列表。相反,它会更新现有的dict1列表。

答案 3 :(得分:0)

使用列表理解将是pythonic方法。

[data.update({'count': list1[index]}) for index, data in enumerate(dict1)]

dict1将使用list1中的相应值进行更新。