Python字典 – 如何根据另一个字典更改键名

huangapple go评论73阅读模式
英文:

Python Dict - How to change Key name based on another dict

问题

以下是翻译好的部分:

我有一个Python字典其中包含键和值我想根据另一个字典的键和值来重命名/映射字典的键
例如

data = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
我的源数据和映射数据如下

key_changes ={'a': 'a1', 'b': 'b1'}
期望的输出是

{'a1': 1, 'b1': 2, 'c': 3, 'd': 4}
我尝试使用**for comprehension**解决这个问题但是我遇到了无效的语法

我尝试了以下解决方案

res = {
    key_changes[_key]:_value       
    if _key in key_changes
    else _key:_value
    for _key,_value in data.items()
}
英文:

I have Python dict with keys and values. I want to rename/mapping the dict key based on another dict keys and values.
For example

data = {'a': 1, 'b': 2, 'c': 3, 'd': 4} 

my source data and mapping data is below.

key_changes ={'a': 'a1', 'b': 'b1'}

expected output is

{'a1': 1, 'b1': 2, 'c': 3, 'd': 4} 

I tried to solve this issue using for comprehension. But I am getting Invalid syntax.

I have tried below solution

res = {
	key_chages[_key]:_value       
	else _key:_value
	for _key,_value in data.items()
	if _key in key_chages
	
}

答案1

得分: 4

你可以使用字典推导来创建一个新字典。

res = { key_changes.get(key, key): value for key, value in data.items() }

key_changes.get(key, key) 将确保替换键,如果键不存在,则使用当前/原始键。

英文:

you can use dict comprehension to create a new dictionary.

res = { key_changes.get(key, key): value for key, value in data.items() }

key_changes.get(key, key) will make sure the keys are replaced and if not present use the current/original key.

答案2

得分: 0

直接使用更新方法更改键,而无需重新构建整个字典:

data.update(zip(key_changes.values(), map(data.pop, key_changes)))

print(data)
{'c': 3, 'd': 4, 'a1': 1, 'b1': 2}
英文:

without rebuilding the whole dictionary, you can directly change the leys using the update method:

data.update(zip(key_changes.values(),map(data.pop,key_changes)))

print(data)
{'c': 3, 'd': 4, 'a1': 1, 'b1': 2}

huangapple
  • 本文由 发表于 2023年7月17日 12:58:54
  • 转载请务必保留本文链接:https://go.coder-hub.com/76701594.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定