मान लीजिए मेरे पास इस तरह का एक शब्दकोश था:

d = {'Q1': ['10', '11', '12'], 'Q2': ['01', '02', '03'], 
'Q3': ['04', '05', '06'], 'Q4': ['07', '08', '09'] }

और एक चर: s = '04' मेरा लक्ष्य d में कुंजी ढूंढना है जो मूल्यों की सूची में s से मेल खाती है। इसलिए, मैं 'Q3' वापस करना चाहता हूं।

 for k, v in d.items():
   for item in v:
     if s == item:
        print(d[v])

उपरोक्त एक TypeError: unhashable type: 'list फेंकता है। शब्दकोश की संरचना को बदले बिना, मैं अपना लक्ष्य कैसे प्राप्त कर सकता हूँ?

0
gwydion93 5 सितंबर 2019, 16:47

1 उत्तर

सबसे बढ़िया उत्तर

आप सूची में अतिरिक्त for के बिना, यह जांचने के लिए in का उपयोग कर सकते हैं कि कोई तत्व सूची में है या नहीं:

d = {'Q1': ['10', '11', '12'], 'Q2': ['01', '02', '03'], 
     'Q3': ['04', '05', '06'], 'Q4': ['07', '08', '09']}

s = '04'

for k, v in d.items():
  if s in v:
    print(k, d[k])

आउटपुट:

Q3 ['04', '05', '06']

आप TypeError प्राप्त कर रहे हैं क्योंकि आप एक सूची (v) को एक शब्दकोश कुंजी (d[v]) के रूप में उपयोग करने का प्रयास कर रहे हैं, लेकिन चूंकि सूचियां अप्राप्य हैं, इसलिए वे कुंजी नहीं हो सकती हैं, इसके बजाय d[k] का उपयोग करें जो सही और सहज दोनों है (चूंकि k key है)।

1
MrGeek 5 सितंबर 2019, 16:53