python - 使用列表作为值的 Python 字典,找到具有相同值的其他键
问题描述
假设我有以下字典。
>> sample_dict = {"1": ['a','b','c'], "2": ['d','e','f'], "3": ['g','h','a']}
我想找到一种方法来查看每个键的值并返回值列表中是否有重复的变量。
例如它会输出:
>> [["1","3"] , ['a']]
我在这里查看了一些帖子,并尝试使用和/或更改它们来完成此操作,但是我发现没有一个按预期工作。如果如下所示,它们将起作用:
>> sample_dict = {"1": ['a','b','c'], "2": ['d','e','f'], "3": ['a','b','c']}
但如果列表中只有一个值相同,则不然。
解决方案
您可以使用另一个字典将值映射到相应键的列表。然后只需选择映射到多个键的值,例如:
from collections import defaultdict
sample_dict = {'1': ['a','b','c'], '2': ['d','e','f'], '3': ['g','h','a']}
d = defaultdict(list) # automatically initialize every value to a list()
for k, v in sample_dict.items():
for x in v:
d[x].append(k)
for k, v in d.items():
if len(v) > 1:
print([v, k])
输出:
[['1', '3'], 'a']
推荐阅读
- apache-spark - Spark SQL - 在 Spark Streams 上部署 SQL 查询的选项
- entity-framework-core - 实体框架核心 OnModelCreating(ModelBuilder modelBuilder)
- android - 从图库中选择图像 - 运行较新的 Android 版本时找不到文件
- angular - angular 4 限制一些特殊字符和零
- docker - Docker 文件:我想从 docker 文件中调用一个脚本
- typeorm - TypeORM - 连接表上的多对多 where 子句
- html - flexbox 属性有问题
- jupyter-notebook - 开发 Jupyter Notebook 扩展时如何引入第三方 js 包
- r - Shiny [列的变化因子]
- c# - asp.net core (2.0) 基于策略的身份验证与休息服务 - HTTP 响应