2012-08-27 83 views
-2

說我有一本字典內的字典,像這樣:如何在Python字典比較項目

Allusers={ 
User1: {'Film1': Vote1, 'Film2': Vote2} 
User2: {'Film1': Vote1, 'Film2'; Vote2} 
... 

} 

我需要的邏輯/算法/公式,每個人比較其他人,只有一次。 我該如何解決這個問題? 謝謝。

+1

定義'比較'。你在找什麼? –

+0

@MartijnPieters:我認爲這個問題*比較*是無關緊要的。 – Constantinius

回答

2
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]) 
+0

@Martijn彼得斯:你說的對,代碼改變了。 – MostafaR

0

類似:

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在第一個循環中。

+0

謝謝,我想這就是我一直在尋找的。 – digit

+0

@ user413734:「組合」解決方案比這個更具可讀性和內存效率。 –