2012-08-01 14 views
7

मेरे पास सूचियों का एक शब्दकोश है जिसके लिए मैं किसी विशेष सूची में कोई मूल्य जोड़ना चाहता हूं ... मेरे पास सूचियों का निम्नलिखित शब्दकोश है।सूचियों के शब्दकोश में आइटमों की पाइथन गिनती

d = {'a': [4,'Adam', 2], 'b': [3,'John', 4], 'c': [4,'Adam', 3], 'd': [4,'Bill' 3], 'e': [4,'Bob'], 'f': [4, 'Joe'], 'g': [4, 'Bill']} 

मैं अनिवार्य रूप से नामों की संख्या का पता गिनती और में वापस जाने के लिए। इसलिए इस मामले में यह

Adam: 2 
Bill: 2 
John: 1 
Bob: 1 
Joe: 1 

की तरह कुछ चीजों को आसान बनाने के लिए किया जाएगा चाहते हैं, सभी के नाम में दूसरा तत्व हैं सूची या

for i in d: 
    d[i][1] 

कोई विचार यह है कि मैं इसे कुशलतापूर्वक कैसे कर सकता हूं? मैं वर्तमान में मैन्युअल रूप से प्रत्येक नाम की जांच कर रहा हूं और उस =/

अग्रिम धन्यवाद!

+0

क्या होता है यदि यह केवल 1 स्थिति में न हो, तो यदि इसे i [x] द्वारा एक्सेस किया जाना है जहां x कुछ स्थिति है जहां तत्व स्थित है? मान [x] काम नहीं करते हैं यदि आप d.itervalues ​​ – user1530318

उत्तर

17

collections.Counter चीजों की गिनती के लिए हमेशा अच्छा होता है।

>>> from collections import Counter 
>>> d = {'a': [4,'Adam', 2], 'b': [3,'John', 4], 'c': [4,'Adam', 3], 'd': [4,'Bill', 3], 'e': [4,'Bob'], 'f': [4, 'Joe'], 'g': [4, 'Bill']} 
>>> # create a list of only the values you want to count, 
>>> # and pass to Counter() 
>>> c = Counter([values[1] for values in d.itervalues()]) 
>>> c 
Counter({'Adam': 2, 'Bill': 2, 'Bob': 1, 'John': 1, 'Joe': 1}) 
+0

के माध्यम से पार करते हैं तो अच्छा लगता है! "काउंटर" भाग को हटाने का कोई तरीका और बस उस सूची को संख्याओं के साथ वापस कर दें? – user1530318

+1

यह पहले से ही एक शब्दकोश-जैसी वस्तु है, लेकिन आप इसे dict (c) के साथ एक शुद्ध शब्दकोश बना सकते हैं। – monkut

1
d = {'key': 'value'} 
temp_dict = {} 
for key, values in d.items(): 
    if values[1] in temp_dict: 
     temp_dict[values[1]] = temp_dict[values[1]] + 1 
    else: 
     temp_dict[values[1]] = 1 

इस कोड को पिछले जवाब से अधिक लंबी है, लेकिन यह सिर्फ एक और तरीका है एक ही परिणाम का उत्पादन करने के लिए है। वैसे भी, temp_dict नामों को कुंजी और मानों के रूप में संग्रहीत करेगा जितनी बार प्रदर्शित होता है।

संबंधित मुद्दे