मैं अजगर में एक शब्दकोश के प्रमुख-मूल्य जोड़े कैसे प्रिंट करता हूं


175

मैं अपने प्रमुख मूल्य जोड़े को एक अजगर शब्दकोश से इस प्रकार बनाना चाहता हूं:

key1 \t value1
key2 \t value2

मैंने सोचा कि मैं शायद इसे इस तरह से कर सकता हूं:

for i in d:
    print d.keys(i), d.values(i)

लेकिन स्पष्ट रूप से यह नहीं है कि यह कैसे जाता है keys()और values()एक तर्क नहीं लेता है।


जवाबों:


325

आपके मौजूदा कोड को बस थोड़ा ट्वीक चाहिए। i है कुंजी है, तो आप बस इसे उपयोग करने के लिए की आवश्यकता होगी:

for i in d:
    print i, d[i]

आप एक ऐसा इटरेटर भी प्राप्त कर सकते हैं जिसमें कुंजियाँ और मान दोनों होते हैं। पायथन 2 में, d.items()(कुंजी, मान) टुपल्स की एक सूची देता है, जबकि d.iteritems()एक पुनरावृत्ति प्रदान करता है जो समान प्रदान करता है:

for k, v in d.iteritems():
    print k, v

पायथन 3 में, d.items()पुनरावृत्त रिटर्न; एक सूची प्राप्त करने के लिए, आपको list()अपने आप को पुनरावृत्ति पास करने की आवश्यकता है ।

for k, v in d.items():
    print(k, v)

60

शब्दकोश में थोड़ा परिचय

d={'a':'apple','b':'ball'}
d.keys()  # displays all keys in list
['a','b']
d.values() # displays your values in list
['apple','ball']
d.items() # displays your pair tuple of key and value
[('a','apple'),('b','ball')

प्रिंट कीज़, वैल्यूज़ मेथड वन

for x in d.keys():
    print x +" => " + d[x]

एक और तरीका

for key,value in d.items():
    print key + " => " + value

आप कुंजी का उपयोग कर प्राप्त कर सकते हैं iter

>>> list(iter(d))
['a', 'b']

आप का उपयोग कर शब्दकोश की कुंजी का मूल्य प्राप्त कर सकते हैं get(key, [value]):

d.get('a')
'apple'

यदि कुंजी डिक्शनरी में मौजूद नहीं है, जब डिफ़ॉल्ट मान दिया जाता है, तो मान वापस आएगा।

d.get('c', 'Cat')
'Cat'


9

शब्दकोष:

d={'key1':'value1','key2':'value2','key3':'value3'}

एक और एक लाइन समाधान:

print(*d.items(), sep='\n')

आउटपुट:

('key1', 'value1')
('key2', 'value2')
('key3', 'value3')

(लेकिन, जब से किसी ने पहले इस तरह का सुझाव नहीं दिया है, मुझे संदेह है कि यह अच्छा अभ्यास नहीं है)


1
मुझे लगता है कि यह निश्चित रूप से एक अधिक स्वीकृत उत्तर होना चाहिए! ... मुझे लगता है कि यह जवाब अजगर में बिजली के प्रकार को दर्शाता है जिसे ज्यादातर नजरअंदाज किया जाता है ... आप '()' ... से छुटकारा पाने के लिए फॉलो भी कर सकते हैं print(*[f"{': '.join(map(str,v))}" for i,v in enumerate(list(d.items()))], sep='\n').... या आप निम्न कार्य कर सकते हैं: सुविधा के साथ-साथ सूचकांक # प्रिंट 'sprint(*[f"[{i}] {': '.join(map(str,v))}" for i,v in enumerate(list(d.items()))], sep='\n')
ग्रीन हाउस


4

आप अपने शब्दकोश पर आइटम () कॉल करके अपनी कुंजियों और / या मूल्यों तक पहुंच सकते हैं ।

for key, value in d.iteritems():
    print(key, value)

1
आपने items()अपने पाठ की पहली पंक्ति में और आपके द्वारा बताए गए कोड में कहा था iteritems()। Python3x में सही तरीका वही है dict.items()जैसा आपने पहले कहा था।
जोएल कार्नेरो

3

यदि आप आउटपुट को प्रमुख कुंजी के आधार पर क्रमबद्ध करना चाहते हैं तो आप संग्रह पैकेज का उपयोग कर सकते हैं ।

import collections
for k, v in collections.OrderedDict(sorted(d.items())).items():
    print(k, v)

यह अजगर 3 पर काम करता है



1

पहले से बताए गए तरीकों के अलावा .. 'viewitems', 'viewkeys', 'viewvalues' का उपयोग कर सकते हैं

>>> d = {320: 1, 321: 0, 322: 3}
>>> list(d.viewitems())
[(320, 1), (321, 0), (322, 3)]
>>> list(d.viewkeys())
[320, 321, 322]
>>> list(d.viewvalues())
[1, 0, 3]

या

>>> list(d.iteritems())
[(320, 1), (321, 0), (322, 3)]
>>> list(d.iterkeys())
[320, 321, 322]
>>> list(d.itervalues())
[1, 0, 3]

या आइटम का उपयोग कर

>>> from operator import itemgetter
>>> map(itemgetter(0), dd.items())     ####  for keys
['323', '332']
>>> map(itemgetter(1), dd.items())     ####  for values
['3323', 232]

0

एक सरल शब्दकोष:

x = {'X':"yes", 'Y':"no", 'Z':"ok"}

पायथन 3 में एक विशिष्ट (कुंजी, मूल्य) जोड़ी को प्रिंट करने के लिए (इस उदाहरण में सूचकांक 1 पर जोड़ी):

for e in range(len(x)):
    print(([x for x in x.keys()][e], [x for x in x.values()][e]))

आउटपुट:

('X', 'yes')
('Y', 'no')
('Z', 'ok')

यहाँ एक एक लाइनर समाधान है जो सभी जोड़ियों को टपल में प्रिंट करता है:

print(tuple(([x for x in x.keys()][i], [x for x in x.values()][i]) for i in range(len(x))))

आउटपुट:

(('X', 'yes'), ('Y', 'no'), ('Z', 'ok'))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.