我有一个列表,里面有嵌套的字典,还有一个带有各自键对值的字典。 我正在尝试将dict2的键映射到列表中字典元素的键。
list = [{'name': 'Megan', 'Age': '28', 'occupation': 'yes', 'race': 'american', 'children': 'yes'}, {'name': 'Ryan', 'Age': '25', 'occupation': 'no', 'race': 'american', 'intern': 'yes'}]
具有正确键的相应字典是
dict_map = {'occupation': 'service', 'intern': 'employee', 'race': 'ethnicity'}
到目前为止,我是python的新手,我正在尝试遍历stackoverflow页面以尝试很少的输出,但到目前为止仍无法获得所需的结果。 我得到的壁橱就是这个Python Dictionary: How to update dictionary value, base on key - using separate dictionary keys
最终输出应为:
[{'name': 'Megan', 'Age': '28', 'service': 'yes', 'ethnicity': 'american', 'children': 'yes'}, {'name': 'Ryan', 'Age': '25', 'service': 'no', 'ethnicity': 'american', 'employee': 'yes'}]
答案 0 :(得分:1)
您可以尝试以下方法:
请注意,我将您的列表重命名为lst
(list
是一种内置类型,您永远不能覆盖!)
lst = [
{
"name": "Megan",
"Age": "28",
"occupation": "yes",
"race": "american",
"children": "yes",
},
{
"name": "Ryan",
"Age": "25",
"occupation": "no",
"race": "american",
"intern": "yes",
},
]
for dct in lst:
for old_key, new_key in dict_map.items():
if old_key not in dct:
continue
dct[new_key] = dct[old_key]
del dct[old_key]
答案 1 :(得分:0)
将列表理解与dict.get
例如:
lst = [{'name': 'Megan', 'Age': '28', 'occupation': 'yes', 'race': 'american', 'children': 'yes'}, {'name': 'Ryan', 'Age': '25', 'occupation': 'no', 'race': 'american', 'intern': 'yes'}]
dict_map = {'occupation': 'service', 'intern': 'employee', 'race': 'ethnicity'}
result = [{dict_map.get(k, k): v for k, v in i.items()} for i in lst]
print(result)
输出:
[{'Age': '28',
'children': 'yes',
'ethnicity': 'american',
'name': 'Megan',
'service': 'yes'},
{'Age': '25',
'employee': 'yes',
'ethnicity': 'american',
'name': 'Ryan',
'service': 'no'}]