首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用映射关系进行字典密钥操作

使用映射关系进行字典密钥操作
EN

Stack Overflow用户
提问于 2020-02-24 15:22:07
回答 4查看 66关注 0票数 2

我想知道,假设我有以下数据结构:

代码语言:javascript
运行
复制
fields = {'Name': 'Foo', 'Surname': 'Bar', 'Email': 'foo.bar@email.com', 'Privacy': 'true'}

我还具有以下映射关系函数:

代码语言:javascript
运行
复制
def get_account_fields_map():
    return {
        'Name': 'first_name',
        'Surname': 'last_name',
        'Email': 'email',
        'Privacy': 'remarketing_consent'
    }

fields_map = get_account_fields_map()

使用fields重命名fields_map字典的最佳和最有效的技术是什么?

我想它可能需要以下几个方面的组合:

代码语言:javascript
运行
复制
_dict[new_key] = __dict.pop(old_key)

还有map()函数,还有某种应用函数来翻译它们的键?不需要sure...any的建议将不胜感激。

注:我还知道其中一个字段值是“true”.我使用的是。XD

编辑:N.B.另外,如果fields有一个在fields_map...for中没有映射的键值对,那么我很高兴从dict中删除那个键值对。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-02-24 15:25:14

您可以创建一个新字典:

代码语言:javascript
运行
复制
fields = {fields_map[k]:v for k,v in fields.items()}

这里有实例化

如果找不到密钥,可以使用get并将原始密钥作为新键返回:

代码语言:javascript
运行
复制
fields = {fields_map.get(k, k):v for k,v in fields.items()}
票数 4
EN

Stack Overflow用户

发布于 2020-02-24 15:26:56

大多数表现方式是在迭代dict时更改键名(例如,输入验证),如下所示:

代码语言:javascript
运行
复制
def read_input(fields):
    fields_map = get_account_fields_map()
    ret = {}
    for k, v in fields.items():
        ret[fields_map[k]] = validate(v)
    return ret

大多数毕多尼克人都不理解:

代码语言:javascript
运行
复制
fields = {fields_map[k]: v for k, v in fields.items()}
票数 2
EN

Stack Overflow用户

发布于 2020-02-24 15:26:27

你可以试着理解力,比如:

代码语言:javascript
运行
复制
{fields_map[k]:v for k,v in fields.items()}

我不知道这是否会是最好和最出色的技术。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60378960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档