मेरे पास एक पायथन डिक्शनरी ऑब्जेक्ट है जो उपयोगकर्ता द्वारा मूल्य प्राप्त करेगा। साथ ही उपयोगकर्ता इसे None के रूप में छोड़ सकता है।

मैं यह जांचना चाहता हूं कि मेरे निर्देश में एक विशिष्ट कुंजी है या नहीं, मैंने कोशिश की if key in dict लेकिन मुझे argument of type 'NoneType' is not iterable त्रुटि मिली जब मेरा निर्देश None है।

मुझे एक लाइन स्टेटमेंट चाहिए जो False लौटाए या तो मेरा निर्देश None है या मेरे निर्देश में वह कुंजी नहीं है।
यहाँ मेरा कोड है: (फॉर्म डिक्शनरी है)

if 'key' not in form:
    # Do somethin
0
Mehrdad Pedramfar 28 मार्च 2018, 12:54

4 जवाब

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

सुनिश्चित नहीं है कि आपके पास वन-लाइनर क्यों होना चाहिए, लेकिन यह एक है:

False if d is None or k not in d else d[k]

या (धन्यवाद @Chris_Rands संकेत के लिए)

False if not d else d.get(k, False)

यदि आप केवल यह जांचना चाहते हैं कि क्या तानाशाही में कुंजी है:

k in d if d else False
2
mhawke 28 मार्च 2018, 10:11
if dict is not None:
  if key in dict.keys():
    return True
return False
0
shahaf 28 मार्च 2018, 09:55

एक पंक्ति कथन को इस प्रकार जोड़ने का प्रयास करें:

True if dict and key in dict else False;

तो फिर, रिटर्न गलत है या तो ताना कोई नहीं है या तानाशाह के पास वह कुंजी नहीं है।

1
Kenny Aires 28 मार्च 2018, 10:05

कोई नहीं और कुंजी उपस्थिति की जाँच के लिए एक लाइनर। मुझे लगता है कि my_dict में उपयोगकर्ता के मान हैं

result = (my_dict is not None) and (key in my_dict)
1
shanmuga 28 मार्च 2018, 10:02