python - 在字典中查找相似键的列表
问题描述
我有一本带有几乎相似键和其他键的字典。我需要使用几乎相似的键提取所有值。例子:
example_dictionary = {'ab1':'1', 'ab2':'2','ab3':'3', 'cd1':'4', 'cd2':'5', 'cd3':'6', 'ef1':'7', 'sdsf':'8', 'ad':'9', 'ef2':'10', 'ef3':'11'}
keymatch = ['ab','cd','ef']
这里我们有一个cd1
withef1, cd2
和ef2, cd3
with的映射ef3
。
我需要的结果是所有的值ab1, ab2, ab3, cd1, cd2, cd3, ef1, ef2, ef3.
我试过了:
abList = [val for key, val in example_dictionary.items() if keymatch[0] in key]
这给了我所有的价值观ab1, ab2, ab3
我试过了:
result = [val for key, val in example_dictionary.items() for item in keymatch if item in key]
这给了我所有的值ab1, ab2, ab3, cd1, cd2, cd3, ef1, ef2, ef3
但是第二种方法的问题是我不能cd1
用ef1
.
有人可以提供更好的方法吗?
解决方案
IIUC,您想要一个合并“相似键”的字典。您可以通过将字典推导与列表推导相结合来做到这一点。
{km: [v for k, v in example_dictionary.items() if km in k] for km in keymatch}
{'ab': ['1', '2', '3'], 'cd': ['4', '5', '6'], 'ef': ['7', '10', '11']}
推荐阅读
- json - 如何通过 NEXT.js 中的 id 从 json 数组中的数据中选择一项
- ios - 使用 firebase-tools 删除 Firestore 文档不起作用
- swift - 解码快速继承数据
- angular - 迁移失败:找不到配置文件
- oracle-apex - Oracle APEX - 显示条件提示
- c# - 如何为同时运行的多个 ActionBlock 设置 CPU 优先级?
- python - 使用我的凭据进行 Google 誓言所有身份验证
- gradle - 在 Gradle 中使用 Groovy 版本?
- r - 从 R 中导出带有颜色编码的列的 Excel 文件?
- c - 列出给定 pid 的子进程的 Linux 内核模块