根据另一个字典键值对更新列表内的字典键

时间:2019-08-20 05:27:31

标签: python list dictionary

我有一个列表,里面有嵌套的字典,还有一个带有各自键对值的字典。 我正在尝试将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'}]

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

请注意,我将您的列表重命名为lstlist是一种内置类型,您永远不能覆盖!)

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'}]