python - 在列表字典中查找重复的字母
问题描述
如何在 python 列表字典中找到重复/重复的字母?我想找到相等的键和值。例如:
{'C': ['E'], 'D': [A], 'I': ['G', 'N'], 'P': ['A', 'H', 'K', 'L'],
'S': ['T','V'], 'R': ['J', 'M', 'Q'], 'Z': ['B', 'F', 'O', 'U', 'W', 'X']}
在这种情况下,字母 A 在字典 D 和 P 中重复出现。
我该怎么做?
谢谢,
解决方案
@timgb 答案的一个小转折是将sum与Counter结合使用,例如:
from collections import Counter
best = {'C': ['E'], 'D': ['A'], 'I': ['G', 'N'], 'P': ['A', 'H', 'K', 'L'],
'S': ['T', 'V'], 'R': ['J', 'M', 'Q'], 'Z': ['B', 'F', 'O', 'U', 'W', 'X']}
counts = sum((Counter(v) for v in best.values()), Counter())
repeated = set(e for e, count in counts.iteritems() if count > 1)
print repeated
print [k for k, values in best.iteritems() if repeated.intersection(values)]
输出
set(['A'])
['D', 'P']
解释
你可以使用sum
withCounter
因为Counter
实现了__add__
方法,只需要提供默认值给sum
,在这种情况下是一个空的计数器。一旦有了计数,您就可以使用生成器表达式获得计数大于 1 的元素。
笔记
在这种情况下,这些代码输出重复元素和包含这些重复元素的键['D', 'P']
推荐阅读
- javascript - 如何在函数本身的 JS replace() 函数中重用正则表达式的匹配值?
- typescript - 尝试实现一个函数,该函数采用三种可能的参数类型中的两种
- html - 当另一个 div 类在另一个属性中具有特定值时,如何更改 CSS 类属性?
- c# - 在 .NET 中的 Winforms 项目上从 API 打开 Pdf
- google-sheets - 查询引用动态数组
- python - 为什么在使用“ttk.”时无法调整按钮/标签大小?
- java - picocli:如果没有给出参数,则显示帮助
- django - 如何对视图中的 HTML 上的所有图像在 Django 中解析进行单元测试?
- python-3.x - 将嵌套字典写入 Excel 工作表
- python - 如何从另一个excel中检索时间戳列范围内的excel文件中的所有行