简体   繁体   English

如何根据另一个字典替换列表字典中键的值?

[英]How to replace a value for a key in dictionaries of a list based on another dictionary?

Here's a sample of the data:以下是数据示例:

[{
  'name': 'Age', 
  'p_value': '<0.001', 
  'ks_score': '0.07', 
}, 
{
  'name': 'peer_LM_Mean_SelfAware', 
  'p_value': '<0.001', 
  'ks_score': '0.06', 
}]

I have over 16k dictionaries with several items in the list.我有超过 16k 的字典,列表中有几个项目。 What I want to do is replace the value of name in this dictionary from another dictionary which consists of the old name and new name.我想要做的是从另一个由旧名称和新名称组成的字典中替换该字典中name的值。

col_rename_list = {'Male': 'Male, n (%)', 
                   'Age': 'Age, years', 
                   'Baby_Boomers__1946_1964_': 'Baby Boomers (1946-1964), n (%)',
                   'Generation_X__1965_1980_': 'Generation X (1965-1980), n (%)',
                   'Generation_Y___Millennials__1981_1996_': 'Generation Y/Millennials (1981-1996), n (%)', 
                   'Race_Asian': 'Asian, n (%)',
                   'peer_LM_Mean_SelfAware': 'Self-Awareness'
                  }

How can I do this?我怎样才能做到这一点? One way that I could think of is the following:我能想到的一种方法如下:

for d in dictionary_list:
    for k,v in d.items():
        if k == 'name':
            if col_rename_list.get(v) is not None:
                d[k] = col_rename_list.get(v)

This works, but is there a better and efficient way to do this?这行得通,但是有没有更好更有效的方法来做到这一点?

You can use dict.get with with default parameter:您可以将dict.get与默认参数一起使用:

lst = [
    {
        "name": "Age",
        "p_value": "<0.001",
        "ks_score": "0.07",
    },
    {
        "name": "peer_LM_Mean_SelfAware",
        "p_value": "<0.001",
        "ks_score": "0.06",
    },
]

col_rename_list = {
    "Male": "Male, n (%)",
    "Age": "Age, years",
    "Baby_Boomers__1946_1964_": "Baby Boomers (1946-1964), n (%)",
    "Generation_X__1965_1980_": "Generation X (1965-1980), n (%)",
    "Generation_Y___Millennials__1981_1996_": "Generation Y/Millennials (1981-1996), n (%)",
    "Race_Asian": "Asian, n (%)",
    "peer_LM_Mean_SelfAware": "Self-Awareness",
}

for d in lst:
    d["name"] = col_rename_list.get(d["name"], d["name"])

# pretty print:
from pprint import pprint
pprint(lst)

Prints:印刷:

[{'ks_score': '0.07', 'name': 'Age, years', 'p_value': '<0.001'},
 {'ks_score': '0.06', 'name': 'Self-Awareness', 'p_value': '<0.001'}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 根据另外两个字典替换一个字典值列表 - Replace a dictionary value list based on another two dictionaries 根据另一个字典列表中的键值删除字典 - Delete a dictionary based on the value of a key in another list of dictionaries 用另一个字典列表中的值替换字典列表中的字典值 - Replace a dictionary value in a list of dictionaries with a value from another list of dictionaries 如何根据字典列表中的另一个值有效地查找字典值 - How to efficiently find a dictionary value based on another value in a list of dictionaries 如果两个字典的值/关键字对匹配,则用另一个字典的值替换列表对象字典的值 - Replace list object dictionary values with values of another dictionary, if value/key pairs of two dictionaries match 根据基于该字典中另一个键的值的条件,更新python词典列表中的值 - Update a value in a list of dictionaries in python based on a condition based on the value of another key in that dictionary 如何将字典列表附加到字典中的键值? - How to append a list of dictionaries to the value of a key in a dictionary? 有没有办法根据一个字典中的值小于另一个字典中的相同键来过滤字典列表? - Is there a way to filter a list of dictionaries based on a value in one dictionary being less than the same key in another? 如何根据另一个字典中指定给相同键的值来更改字典键? - How to Change a Dictionaries Key Based on the Value Designated to the Same Key in Another Dictionary? 根据字典列表中的另一个值(键的)检索键的值 - Retrieve a value of a key based on another value(of key) in the list of dictionaries
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM