मैं सीधे पायथन में चर के रूप में शब्दकोश कुंजी कैसे प्राप्त कर सकता हूं (मूल्य से खोज करके नहीं)?


189

इस मूल प्रश्न के लिए क्षमा करें, लेकिन इस पर मेरी खोजों को इसके मूल्य के आधार पर एक शब्दकोश की कुंजी प्राप्त करने के अलावा और कुछ भी नहीं बदल रहा है, जिसे मैं उपयोग नहीं करना पसंद करूंगा क्योंकि मैं बस कुंजी का पाठ / नाम चाहता हूं और चिंतित हूं कि खोज यदि डिक्शनरी में बहुत सारी प्रविष्टियाँ हैं, तो 2 या अधिक कुंजी वापस कर सकते हैं ... मैं जो करने की कोशिश कर रहा हूं वह यह है:

mydictionary={'keyname':'somevalue'}
for current in mydictionary:

   result = mydictionary.(some_function_to_get_key_name)[current]
   print result
   "keyname"

इसका कारण यह है कि मैं इन्हें एक दस्तावेज में प्रिंट कर रहा हूं और मैं ऐसा करने के लिए मुख्य नाम और मूल्य का उपयोग करना चाहता हूं

मैंने नीचे दी गई विधि देखी है, लेकिन ऐसा लगता है कि केवल कुंजी का मूल्य वापस करना है

get(key[, default])

क्या आप केवल यह जांचना चाहते हैं कि 'कीनेम' शब्दकोष में मौजूद है? क्योंकि आप कर यह पहले से ही है।
relet

1
नहीं जैसा कि मैंने कहा, इसे प्रिंट करने की आवश्यकता है, यह बड़ी संख्या में कुंजियों के माध्यम से पुनरावृत्ति होगी
रिक

currentवर्तमान कुंजी है, बस करोprint current
Moberg

4
आपको शब्दकोश में सिर्फ 1 कुंजी कैसे मिलेगी? (कोई पुनरावृत्ति नहीं)
VISQL

जवाबों:


238

आपको कुंजी के साथ चलना चाहिए:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])

10
आप बस लिख सकते हैंfor key in mydictionary:
ब्लोकले

7
अजगर 3.6 में:print (f"key: {key}, value: {mydictionary[key]}")
जिनसो

94

यदि आप कुंजी और मान प्रिंट करना चाहते हैं, तो निम्नलिखित का उपयोग करें:

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

26
पायथन 3 के लिए: पुनरावृत्तियों () के बजाय आइटम ()
toshiro92

82

इसका कारण यह है कि मैं इन्हें एक दस्तावेज में प्रिंट कर रहा हूं और मैं ऐसा करने के लिए मुख्य नाम और मूल्य का उपयोग करना चाहता हूं

उपरोक्त आवश्यकता के आधार पर मैं यही सुझाव दूंगा:

keys = mydictionary.keys()
keys.sort()

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))

मैं लूप ऑन my_dict.item()या लिस्ट कॉम्प्रिहेंशन के लिए जैसे अन्य उत्तरों को पसंद करता हूं , keys = list(my_dict.keys)लेकिन जैसे कोई व्यक्ति पायथन 3 में यह करना चाहता है: (पंक्ति 2) keys = sorted(my_dict.keys())+ ऐड () प्रिंट करना।
होनिक्स

49

यदि डिक्शनरी में एक जोड़ा इस प्रकार है:

d = {'age':24}

तो आप के रूप में प्राप्त कर सकते हैं

field, value = d.items()[0]

पायथन 3.5 के लिए, यह करें:

key = list(d.keys())[0]

4
पायथन 3.5:TypeError: 'dict_items' object does not support indexing
सिनक्स

सुंदर हैकिश लेकिन d .__ iter __ () .__ अगला __ () एक चाल है। आपको 'उम्र' मिलती है आपको इस d.items () .__ iter __ () .__ अगला __ () [0] के साथ एक ही परिणाम मिलता है।
योशी

2
पायथन 3 में, यह एक जोड़ी के लिए काम करता है:key = list(d.keys())[0]
जूहा अन्टिनन

यदि आपके पास एक बहुत बड़ा तानाशाही है, तो इसके next()अनुसार बेहतर है: stackoverflow.com/a/27638751/1488445
Juha Untinen

14

keys=[i for i in mydictionary.keys()] या keys = list(mydictionary.keys())


कृपया कोड टैग का उपयोग करना सुनिश्चित करें और अपना उत्तर भी बताएं।
Chrismas007

9

इतना सरल है:

mydictionary={'keyname':'somevalue'}
result = mydictionary.popitem()[0]

आप अपने शब्दकोश को संशोधित करेंगे और इसकी एक प्रति पहले बना लें


8

आप बस उपयोग कर सकते हैं *जो शब्दकोश कुंजियों को खोल देता है। उदाहरण:

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')

python34: SyntaxError: तारांकित अभिव्यक्ति का उपयोग केवल असाइनमेंट लक्ष्य के रूप में कर सकते हैं
Tcll

खतरे, मैं python34 का उपयोग करता हूं क्योंकि मैं अपने विंडोज़ परीक्षण वातावरण में कुछ भी नया नहीं चला सकता।
Tcll

5

शब्दकोश पर Iterate (i) कुंजी लौटाएगा, फिर मान प्राप्त करने के लिए इसका (i) उपयोग कर रहा है

for i in D:
    print "key: %s, value: %s" % (i, D[i])

3

अजगर 3 के लिए यदि आप केवल कुंजियों का उपयोग करना चाहते हैं। यदि आप मान चाहते हैं, तो प्रिंट (कुंजी) को प्रिंट (मान) से बदलें।

for key,value in my_dict:
  print(key)

3

मैं कभी-कभी क्या करता हूं मैं एक और शब्दकोश बना सकता हूं, जो मुझे लगता है कि मुझे स्ट्रिंग के रूप में उपयोग करने की आवश्यकता है। फिर मैं वर्णन के रूप में पहले कॉलम के साथ एक तालिका बनाने के लिए कई शब्दकोशों मिलान कुंजियों पर पुनरावृति करता हूं।

dict_names = {'key1': 'Text 1', 'key2': 'Text 2'}
dict_values = {'key1': 0, 'key2': 1} 

for key, value in dict_names.items():
    print('{0} {1}'.format(dict_names[key], dict_values[key])

आप डेटा का मिलान करने के लिए शब्दकोशों की एक बड़ी राशि के लिए आसानी से कर सकते हैं (मुझे यह तथ्य पसंद है कि शब्दकोश के साथ आप हमेशा किसी महत्वपूर्ण चीज़ का उल्लेख कर सकते हैं जिसे कुंजी नाम के रूप में जाना जाता है):

हां, मैं फ़ंक्शन के परिणामों को संग्रहीत करने के लिए शब्दकोशों का उपयोग करता हूं, इसलिए मुझे इन कार्यों को चलाने की आवश्यकता नहीं है मैं उन्हें केवल एक बार कॉल करता हूं और फिर कभी भी परिणामों तक पहुंच सकता हूं।

संपादित करें: मेरे उदाहरण में मुख्य नाम वास्तव में मायने नहीं रखता है (मैं व्यक्तिगत रूप से उसी प्रमुख नामों का उपयोग करना पसंद करता हूं क्योंकि मेरे किसी भी मेलिंग डिक्शनरी में से किसी एक मूल्य को चुनना आसान है), बस यह सुनिश्चित करें कि प्रत्येक शब्दकोश में कुंजियों की संख्या है वही


0

आप सूची में प्रमुख कुंजियों और मूल्यों को कास्टिंग करके ऐसा कर सकते हैं। यह वस्तुओं के लिए भी किया जा सकता है।

उदाहरण:

f = {'one': 'police', 'two': 'oranges', 'three': 'car'}
list(f.keys())[0] = 'one'
list(f.keys())[1] = 'two'

list(f.values())[0] = 'police'
list(f.values())[1] = 'oranges'

-2

आसानी से अपनी कुंजियों और मूल्यों की स्थिति को बदलें, फिर कुंजी प्राप्त करने के लिए मूल्यों का उपयोग करें, शब्दकोश कुंजियों में समान मूल्य हो सकते हैं लेकिन वे (चाबियाँ) अलग होनी चाहिए। उदाहरण के लिए यदि आपके पास एक सूची है और इसका पहला मूल्य आपकी समस्या की कुंजी है और अन्य मूल्य पहले मूल्य के चश्मे हैं:

list1=["Name",'ID=13736','Phone:1313','Dep:pyhton']

आप इस लूप द्वारा डिक्शनरी में डेटा को आसानी से सेव और यूज कर सकते हैं:

data_dict={}
for i in range(1, len(list1)):
     data_dict[list1[i]]=list1[0]
print(data_dict)
{'ID=13736': 'Name', 'Phone:1313': 'Name', 'Dep:pyhton': 'Name'}

तब आप किसी भी इनपुट वैल्यू के आधार पर कुंजी (नाम) आधार पा सकते हैं।

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