假设我有以下 Python 字典的列表:
dict1 = [{'domain':'Ratios'},{'domain':'Geometry'}]
并且一个类似于以下列表:
list1 = [3, 6]
我想要更新dict1
或者创建一个新的列表,如下所示:
dict1 = [{'domain':'Ratios', 'count':3}, {'domain':'Geometry', 'count':6}]
我应该如何做到这一点?
假设我有以下 Python 字典的列表:
dict1 = [{'domain':'Ratios'},{'domain':'Geometry'}]
并且一个类似于以下列表:
list1 = [3, 6]
我想要更新dict1
或者创建一个新的列表,如下所示:
dict1 = [{'domain':'Ratios', 'count':3}, {'domain':'Geometry', 'count':6}]
我应该如何做到这一点?
>>> 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'}]
timeit
测试 - jamylakfor i, d in enumerate(dict1):
d['count'] = list1[i]
# 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
列表。
[data.update({'count': list1[index]}) for index, data in enumerate(dict1)]
dict1
将会被更新为来自 list1
的相应值。
data.update()
的返回值为 None
。你将得到输出 [None, None, ....]
。 - Manoj Sahu