मेरे पास मानों की एक सूची 1 है:

['A','B','C','D']

और मेरे पास एक dict . है

{1: ['A','F'],2:['B','J'],3:['C','N'],4:['D','X']}

मैं सूची में प्रत्येक मान के लिए कुंजी प्राप्त करना चाहता हूं:

मैंने कोशिश की :

[dict1[x] for x in list]

हालाँकि, एक त्रुटि उत्पन्न होती है क्योंकि मैं इस तथ्य पर विचार नहीं कर रहा हूँ कि ताना मान एक सूची है न कि एक मान। मैं इसे कैसे हासिल कर सकता था?

मेरा वांछित आउटपुट सूची 1 मानों की कुंजियों वाली एक सूची होगी:

[1,2,3,4]
3
JamesHudson81 11 अगस्त 2019, 17:15

2 जवाब

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

आप सूची-समझ का उपयोग कर सकते हैं:

[k for x in lst for k, v in d.items() if x in v]

उदाहरण:

lst = ['A','B','C','D']
d = {1: ['A','F'],2:['B','J'],3:['C','N'],4:['D','X']}

print([k for x in lst for k, v in d.items() if x in v])
# [1, 2, 3, 4]
5
Austin 11 अगस्त 2019, 17:18

आप शब्दकोश को समतल कर सकते हैं और इसे लुकअप के रूप में उपयोग कर सकते हैं:

data = ['A','B','C','D']
d = {1: ['A','F'],2:['B','J'],3:['C','N'],4:['D','X']}
new_d = {i:a for a, b in d.items() for i in b}
result = [new_d[i] for i in data]

आउटपुट:

[1, 2, 3, 4]
4
Ajax1234 11 अगस्त 2019, 17:17