微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

以下是数据示例:

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

我有超过 16,000 部字典,列表中有几个项目。我想要做的是从另一个由旧名称和新名称组成的字典中替换此字典中 name 的值。

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

我该怎么做?我能想到的一种方法如下:

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)

这行得通,但有没有更好更有效的方法来做到这一点?

解决方法

您可以将 dict.get 与默认参数一起使用:

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

col_rename_list = {
    "Male": "Male,n (%)","Age": "Age,years","Baby_Boomers__1946_1964_": "Baby Boomers (1946-1964),"Generation_X__1965_1980_": "Generation X (1965-1980),"Generation_Y___Millennials__1981_1996_": "Generation Y/Millennials (1981-1996),"Race_Asian": "Asian,"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)

打印:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?