python - 如何有效地循环字典,我应该使用另一种数据结构
问题描述
我有一个叫dict1。当然,字典是编出来的,真正的字典更大。
dict1 = {'USA_Mark': ['dog'],
'USA_Haechan': ['lion', 'jaguar'],
'USA_Mina': ['apples', 'pears', 'watermelons'],
'UK_Mark': ['dog'],
'UK_Haechan': ['lion', 'jaguar', 'tiger'],
'UK_Mina': ['apples', 'pears', 'watermelons']}
我有另一个 dict2 包含这样的内容:
dict2 = {'USA_cats':['lion', 'jaguar'], 'USA_fruits':['apples, 'pears', 'watermelons'],
'UK_cats':['lion', 'jaguar', 'tiger'], 'UK_fruits':['apples, 'pears', 'watermelons']}
我最终想要的是将dict2's
键映射到dict1's
值。
我以硬编码的方式做到了。我所做的是:
for key, value in dict1.items():
if 'Haechan' in key and len(value ) > 1:
dict1[key] = dict2['{} cats'.format(key[:2])]
elif 'Mina' in key and len(value) > 1:
dict1[key] = dict2['{} fruits'.format(key[:2])]
预期成绩:
dict1 = {'USA_Mark': ['dog'],
'USA_Haechan': ['USA_cats'],
'USA_Mina': ['USA_fruits'],
'UK_Mark': ['dog'],
'UK_Haechan': ['UK_cats'],
'UK_Mina': ['UK_fruits']}
这效率不高,我知道,请问我可以知道更好的方法吗,我似乎经常在字典中使用循环,我从朋友那里听说如果你一直这样做,你可能需要考虑一个更好的方法数据结构...
解决方案
在字符处拆分键_
,然后使用字典将键的第二部分映射到翻译的单词。
mapping = {'Haechan': 'cats', 'Mina': 'fruits'}
for key, value in dict1.items():
country, type = key.split('_')
if type in mapping and len(value) > 1:
dict1[key] = [f'{country}_{mapping[type]}']
推荐阅读
- html - 材质组件 mat-button 和 mat-icon 对齐
- css - CSS:试图测试 flex-shrink 的行为,但看不到它的工作原理
- html - 右对齐
- reactjs - React Leaflet - 更新地图中心
- unit-testing - Flutter 测试失败,单元测试预期和实际状态对象相同但在测试运行时仍然失败
- c# - 带有类型参数的 SubPub 模式
- node.js - 如何让 Gatsby + netlify 网站在我的机器上运行?
- mysql - MySQL 8.0 命令行客户端立即启动和停止
- php - 如何获得相同的数组?php, Laravel
- arrays - 按升序排列数组元素的函数