英文:
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}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论