12

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

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

和一个类似的列表:

list1 = [3, 6]

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

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

我该怎么做?

4

4 回答 4

23
>>> 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'}]
于 2012-05-15T00:23:58.513 回答
6

你可以这样做:

for i, d in enumerate(dict1):
    d['count'] = list1[i]
于 2012-05-15T00:22:16.887 回答
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列表。

于 2012-05-15T00:41:03.200 回答
0

使用列表推导将是 Pythonic 的方式。

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

dict1使用来自 的相应值进行更新list1

于 2012-05-15T18:25:46.103 回答