2014-11-22 81 views
-1
**for i in range(a): 
    p=int(raw_input("Enter Elements in List1:")) 
    list1.append(p) 
    d1=defaultdict(int) 
    for item in list1: 
     d1[item]+=1 
print list1 
print d1.items() 
print ""** 

如何比較以下列表輸出中的元組值? 在這裏我的答案應該返回元組值(207,2),(208,1)和(209,1),因爲這兩個列表中都是相同的。比較兩個列表中的元組值

input1 : [203, 203, 204, 204, 205, 206, 207, 208, 207, 209] 

output1: [(203, 2), (204, 2), (205, 1), (206, 1), (207, 2), (208, 1), (209, 1)] 

input2: [204, 203, 205, 205, 206, 206, 207, 207, 208, 209, 205, 206, 205] 

output2: [(203, 1), (204, 1), (205, 4), (206, 3), (207, 2), (208, 1), (209, 1)] 
+0

應使用降價的代碼。 http://en.wikipedia.org/wiki/Markdown – 2014-11-22 07:07:13

+0

@JavierCastellanos你應該編輯代碼,如果提問者不這樣做...... – 2014-11-22 07:12:06

+0

@JonKiparsky我沒有足夠的聲譽來編輯問題。 – 2014-11-22 07:14:16

回答

0

您可以使用Counter

>>> from collections import Counter 
>>> lst = [203, 203, 204, 204, 205, 206, 207, 208, 207, 209] 
>>> freqs = Counter(lst) 
>>> freqs 
Counter({203: 2, 204: 2, 207: 2, 205: 1, 206: 1, 208: 1, 209: 1}) 
>>> lst2 = [204, 203, 205, 205, 206, 206, 207, 207, 208, 209, 205, 206, 205] 
>>> Counter(lst2) 
Counter({205: 4, 206: 3, 207: 2, 203: 1, 204: 1, 208: 1, 209: 1}) 

先比較方法:

>>> [ k for k,v in Counter(lst2).iteritems() if v == Counter(lst)[k] ] 
[207, 208, 209] 

第二次比較方法:

>>> for k,v in Counter(lst2).iteritems(): 
...  if v == Counter(lst)[k]: 
...    print k 
... 
207 
208 
209 
+0

我想比較我的output1和output2中的元組值。每當輸出列表中值字段的計數值相同時,程序應該返回這些值。在這種情況下,它應返回207,208,209 – Tanay 2014-11-22 07:20:42

+0

在代碼中可以比較兩者中的字典值的列表?值相同的計數應該返回它們的值 – Tanay 2014-11-22 07:30:16

+1

是的..工作...真棒..謝謝你.. !!!!!! – Tanay 2014-11-22 08:15:13