我正在研究社交媒體共同朋友問題,我選擇使用字典來代表他們。我被困在你讓一對用戶說 a 和 b 并創建一個具有他們朋友列表聯合的集合的部分,比如 ab -> [{b,c,d,e},{c,d,a }]注意:下面的代碼表示有一個用戶,他有一些存儲在字典中的朋友?,F在我想將每個用戶與他們朋友列表中的每個其他用戶配對,并創建一個集合列表,其中包含兩個用戶的朋友列表。users = { 'a': ['b', 'c', 'd', 'e'], 'b': ['c', 'd', 'a'], 'c': ['a', 'b'], 'd': ['a','b','e'], 'e': ['a','d']}
1 回答

www說
TA貢獻1775條經驗 獲得超8個贊
您可以將列表的字典轉換為集合的字典,以便您可以對返回的兩個用戶的每個組合使用集合交集itertools.combinations來查找他們的共同朋友,并形成一個由用戶對的frozensets索引的集合字典:
from itertools import combinations
u = {k: set(l) for k, l in users.items()}
{frozenset((a, b)): u[a] & u[b] for a, b in combinations(u, 2)}
這將返回:
{frozenset({'b', 'a'}): {'c', 'd'},
frozenset({'a', 'c'}): {'b'},
frozenset({'a', 'd'}): {'b', 'e'},
frozenset({'a', 'e'}): {'d'},
frozenset({'b', 'c'}): {'a'},
frozenset({'b', 'd'}): {'a'},
frozenset({'b', 'e'}): {'a', 'd'},
frozenset({'c', 'd'}): {'b', 'a'},
frozenset({'c', 'e'}): {'a'},
frozenset({'e', 'd'}): {'a'}}
添加回答
舉報
0/150
提交
取消