說我有一本字典內的字典,像這樣:如何在Python字典比較項目
Allusers={
User1: {'Film1': Vote1, 'Film2': Vote2}
User2: {'Film1': Vote1, 'Film2'; Vote2}
...
}
我需要的邏輯/算法/公式,每個人比較其他人,只有一次。 我該如何解決這個問題? 謝謝。
說我有一本字典內的字典,像這樣:如何在Python字典比較項目
Allusers={
User1: {'Film1': Vote1, 'Film2': Vote2}
User2: {'Film1': Vote1, 'Film2'; Vote2}
...
}
我需要的邏輯/算法/公式,每個人比較其他人,只有一次。 我該如何解決這個問題? 謝謝。
from itertools import combinations
Allusers={
'User1': {'Film1': 'Vote1', 'Film2': 'Vote2'},
'User2': {'Film1': 'Vote1', 'Film2': 'Vote2'}
}
for comb in combinations(Allusers, 2):
if Allusers[comb[0]] == Allusers[comb[1]]:
print '{0} is same with {1}'.format(comb[0], comb[1])
@Martijn彼得斯:你說的對,代碼改變了。 – MostafaR
類似:
users={
User1: {'Film1': Vote1, 'Film2': Vote2}
User2: {'Film1': Vote1, 'Film2'; Vote2}
User3: {'Film1': Vote1, 'Film2'; Vote2}
User4: {'Film1': Vote1, 'Film2'; Vote2}
}
keys=list(users)
for i,x in enumerate(keys):
for y in keys[i+1:]:
#compare users[x] and users[y] here
在這裏的第一個循環User1
會相比,用戶2,3,4
,並在下一循環User2
將comapared給用戶3,4只因爲他已經comapared到User1
在第一個循環中。
謝謝,我想這就是我一直在尋找的。 – digit
@ user413734:「組合」解決方案比這個更具可讀性和內存效率。 –
定義'比較'。你在找什麼? –
@MartijnPieters:我認爲這個問題*比較*是無關緊要的。 – Constantinius