2012-08-27 48 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:“组合”解决方案比这个更具可读性和内存效率。 –