gpt4 book ai didi

python - 在 python 字典或数据框中查找共现

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:59 24 4
gpt4 key购买 nike

我有两个字典(如果需要,可以轻松转换为数据帧),我想找到其中名称的共现( friend )。第一个字典包含名称之间的关系。

我的字典:

{'George': ['Bill','Mary'],
'Bill': ['George'],
'Sam' : [],
....}

另一本字典包含一起出去的人的列表

我的_dict2:

{1: 'Mary,George,Sandra,Alice',
2: 'Bob,Bill,Sam,George',
3: 'Simon,Frank',
....}

我想找到一起出去的 friend 的列表/字典/数据框。所以预期的输出是:

Mary,George
Bill,George
..

我试过了

for key, my_dict_values in my_dict.items():
for my_dict2_values in my_dict2.values():
if key == my_dict2_values and my_dict_values == my_dict2_values :
....

但是它不起作用,并且需要很长时间才能给出结果。有什么建议吗?

谢谢

最佳答案

这段代码非常慢(O(n^3)),因此请考虑优化您的数据结构,看看是否可以改进访问好友详细信息的方式。

d1 = {'George': ['Bill','Mary'],
'Bill': ['George'],
'Sam' : [],
}

d2 = {1: 'Mary,George,Sandra,Alice',
2: 'Bob,Bill,Sam,George',
3: 'Simon,Frank',
}

out = []
for p1, friends in d1.items():
for friend in friends:
for party in d2.values():
if p1 in party and friend in party:
out.append([p1,friend])

print out

给予:

[['Bill', 'George'], ['George', 'Bill'], ['George', 'Mary']]

其次,尝试编写真正描述您正在做的事情的代码,因为这样更容易理解。例如,考虑:

for key, my_dict_values in my_dict.items():
for my_dict2_values in my_dict2.values():
if key == my_dict2_values and my_dict_values == my_dict2_values :

比较:

for p1, friends in d1.items():
for friend in friends:
for party in d2.values():
if p1 in party and friend in party:

关于python - 在 python 字典或数据框中查找共现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726061/

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