मैं पायथन 3 का उपयोग कर रहा हूं। मेरे पास 3 समूह हैं और इन समूहों में मेरे कई मान हैं। यहां छवि विवरण दर्ज करें

मेरे पास वह मूल्य है जिसे मैं खोजता हूं और मैं उसका समूह प्राप्त करना चाहता हूं। उदाहरण के लिए यदि मेरे पास CCC है तो मुझे GROUP 1 प्राप्त करने की आवश्यकता है और यदि मेरे पास HHH है तो मुझे GROUP 3 चाहिए तो समूह के अनुसार कुछ करें।

तो मुझे लगता है कि मैं इस तरह एक ताना बनाने वाला हूं (मुझे बताएं कि क्या मैं गलत हूं):

{
  'group1': {'AAA','BBB','CCC','DDD'}, 
  'group2': {'EEE','FFF','GGG'},
  'group3': {'HHH','JJJ'}
}

तो मैं देखता हूं कि हम एक मूल्य से कुंजी प्राप्त करने के लिए ताना वापस कर सकते हैं इसलिए मैंने ऐसा करने के लिए सोचा:

dict = {
  'group1': {'AAA','BBB','CCC','DDD'},
  'group2': {'EEE','FFF','GGG'},
  'group3': {'HHH','JJJ'}
}

revdict = dict([(dict[key],key) for key in dict])

group = revdict['CCC']
if group == 'group1':
    # Do something
elif group == 'group2':
    # Do something
elif group == 'group3':
    # Do something

लेकिन मुझे नहीं लगता कि मैं जो चाहता हूं उसे करने का यह अच्छा तरीका है। ऐसा कुछ करने का एक तरीका है:

if 'CCC' in dict :
    # Then get the current key. How ?

या शायद मुझे ताना बनाने की जरूरत नहीं है लेकिन दूसरी चीजें हैं? मैं आपके सभी सुझावों के लिए खुला हूं।

0
John 4 अक्टूबर 2018, 15:59

3 जवाब

for k,v in dict.items():
   if 'CCC' in v:
      print(k)

आप लूप या रिवर्स डिक्ट्स से बच नहीं सकते हैं। यदि आपके पास मेमोरी की कमी नहीं है तो अपने रिवर्स डिक्टेट का उपयोग करें।

0
Mete Han Kahraman 4 अक्टूबर 2018, 13:44

आप सूची समझ का उपयोग करके key को पुनः प्राप्त कर सकते हैं और केवल key को वापस कर सकते हैं यदि आप जिस str की तलाश कर रहे हैं, वह इसके values में है

d = {
  'group1': {'AAA','BBB','CCC','DDD'},
  'group2': {'EEE','FFF','GGG'},
  'group3': {'HHH','JJJ'}
}

a = [i for i in d if 'CCC' in d[i]]
# ['group1']
0
vash_the_stampede 4 अक्टूबर 2018, 13:06

मैं आप पर जोर देता हूं कि कुंजी के लिए अनुक्रमणिका का उपयोग न करें,

answer = None
for key in d.keys():
   if "CCC" in d[key]:
      answer = key
      break

* संपादित करें @ ओलिवियर द्वारा सुझाया गया

0
GraphicalDot 4 अक्टूबर 2018, 13:42