gpt4 book ai didi

python更新列表中的字典值

转载 作者:太空宇宙 更新时间:2023-11-03 15:51:09 25 4
gpt4 key购买 nike

我有一个包含两个元素(键值对)的列表。这两个元素都有相同的键。但是很少有值不同,如下所示。

alist = [{u'a': u'x', u'b': u'y', u'c': u'z'}, {u'a': u'x', u'b': u'm', u'c': u'n'}]

我想将新数据更新到字典中可用的列表,这是根据用户输入更新的,如下所示。

a_dict  = {'a': ['user_input_x'], 'b': ['user_input_y', 'user_input_m'], 'c': ['user_input_z', 'user_input_n']}

结果列表应该是这样的,

ans_alist = [{u'a': u'user_input_x', u'b': u'user_input_y', u'c': u'user_input_z'}, {u'a': u'user_input_x', u'b': u'user_input_m', u'c': u'user_input_n'}] 

我尝试了一些东西,下面是代码片段,但是因为它是字典,代码正在更新所有键,具有相同的值,

for i in range(0, 2):
for key in alist:
key['a'] = a_dict['a'][i]
key['b'] = a_dict['b'][i]
key['c'] = a_dict['b'][i]
print alist


ans_alist = [{u'a': ['user_input_x'], u'b': 'user_input_y', u'c': 'user_input_n'}, {u'a': ['user_input_x'], u'b': 'user_input_y', u'c': 'user_input_n'}]

感谢您的帮助。

最佳答案

新答案:

根据a_dict 中的值更新alist

>>> new_alist = []
>>> for i,d in enumerate(alist): #traverse the list
temp = {}

for key,val in d.items(): #go through the `dict`
if len(a_dict[key])>0 : #alist->[key] is present in a_dict
temp[key] = a_dict[key].pop(0) #used the value, delete it from a_dict
else : #use previous updated value
temp[key] = new_alist[i-1][key] #get value from previously updated

new_alist.append(temp) #add the updated `dict`

#驱动程序值

IN :  alist = [{u'a': u'x', u'b': u'y', u'c': u'z'}, 
{u'a': u'x', u'b': u'm', u'c': u'n'}]
IN : a_dict = {'a': ['user_input_x'], 'b': ['user_input_y', 'user_input_m'], 'c': ['user_input_z', 'user_input_n']}

OUT : new_alist
=> [{'a': 'user_input_x', 'b': 'user_input_y', 'c': 'user_input_z'},
{'a': 'user_input_x', 'b': 'user_input_m', 'c': 'user_input_n'}]

旧答案:(不完全符合要求)

计算a_dict:

>>> from collections import defaultdict
>>> a_dict = defaultdict(list)

>>> for d in alist: #traverse the list
for key,val in d.items():
if val not in a_dict[key]: #if val not already there
a_dict[key].append(val) #add it to the [key]

>>> a_dict
=> defaultdict(<class 'list'>,
{'a': ['user_input_x'],
'b': ['user_input_y', 'user_input_m'],
'c': ['user_input_z', 'user_input_n']
})

计算ans_list:

>>> ans_list = []
>>> for d in alist: #traverse the list
temp = {}
for key,val in d.items():
temp[key] = val
ans_list.append(temp) #add the new dictionary

>>> ans_list
=> [{'a': 'user_input_x', 'b': 'user_input_y', 'c': 'user_input_z'},
{'a': 'user_input_x', 'b': 'user_input_m', 'c': 'user_input_n'}]

关于python更新列表中的字典值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com