gpt4 book ai didi

python - 迭代并比较第一个项目与字典中的所有项目

转载 作者:行者123 更新时间:2023-12-01 05:45:05 25 4
gpt4 key购买 nike

请帮忙,我似乎找不到办法做到这一点。我正在开发一个网络科学项目,这是我使用 python 的第三个项目。

我需要将字典中的第一个项目与同一字典中的所有其他项目进行比较,但我的其他项目是字典。

例如,我有一个具有以下值的字典:

{'25': {'Return of the Jedi (1983)': 5.0},
'42': {'Batman (1989)': 3.0, 'E.T. the Extra-Terrestrial (1982)': 5.0},
'8': {'Return of the Jedi (1983)': 5.0 },'542': {'Alice in Wonderland (1951)': 3.0, 'Blade Runner (1982)': 4.0}, '7': {'Alice in Wonderland (1951)': 3.0,'Blade Runner (1982)': 4.0}}

所以我需要看看在这种情况下键“25”和“42”是否包含相同的电影“绝地归来”,然后“25”和“8”是否包含相同的电影等等。如果他们这样做,我需要知道有多少电影重叠。

这是一个字典的例子,整个字典包含 1000 个键,子字典也更大。

我尝试迭代、比较字典、复制、合并、连接,但我似乎无法掌握如何做到这一点。

请帮忙!

问题是我仍然无法比较两个子词典,因为我需要找到至少包含 2 部相同电影的键。

最佳答案

您可以使用collections.Counter:

>>> dic={'25': {'Return of the Jedi (1983)': 5.0}, '42': {'Batman (1989)': 3.0, 'E.T. the Extra-Terrestrial (1982)': 5.0}, '8': {'Return of the Jedi (1983)': 5.0 }}
>>> from collections import Counter
>>> c=Counter(movie for v in dic.values() for movie in v)

>>> [k for k,v in c.items() if v>1] #returns the name of movies repeated more than once
['Return of the Jedi (1983)']
>>> c
Counter({'Return of the Jedi (1983)': 2,
'Batman (1989)': 1,
'E.T. the Extra-Terrestrial (1982)': 1})

要获取与每部电影相关的 key ,您可以使用collections.defaultdict:

>>> from collections import defaultdict
>>> movie_keys=defaultdict(list)
>>> for k,v in dic.items():
for movie in v:
movie_keys[movie].append(k)
...
>>> movie_keys
defaultdict(<type 'list'>, {'Batman (1989)': ['42'], 'Return of the Jedi (1983)': ['25', '8'], 'E.T. the Extra-Terrestrial (1982)': ['42']})

关于python - 迭代并比较第一个项目与字典中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16351614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com