给定以下代码:
a = [{"name": "Sport"}, {"name": "Games"}, {"name": "Videos"}, {"name": "Sport"}]
如何确定 a 变量中的另一个字典是否具有相同的名称值?在上面的示例中,结果应返回“Sport”。
提前致谢。
请您参考如下方法:
有很多很棒的方法可以做到这一点。 Python 中的规范可能是使用 collections.Counter
from collections import Counter
c = Counter([d['name'] for d in a])
for value,count in c.items():
if count > 1:
print(value)
如果您只需要知道某物是否重复(而不是它被重复了多少次),您可以通过使用seen 集来简化。
seen = set()
for d in a:
val = d['name']
if val in seen:
print(val)
seen.add(val)
可能最过度设计的方法是按“名称”值对字典进行排序,然后运行 groupby 并检查每个组的长度。
from itertools import groupby
from operator import itemgetter
namegetter = itemgetter('name')
new_a = sorted(a, key=namegetter)
groups = groupby(new_a, namegetter)
for groupname, dicts in groups:
if len(list(dicts)) > 1:
print(groupname)
