मैं अपने पायथन पाठ्यक्रम में एक असाइनमेंट के लिए एक शब्दकोश में मूल्यों तक पहुंचने (और तुलना) करने का तरीका जानने के लिए संघर्ष कर रहा हूं।

मुझे लगता है कि मैं चाबियों और मूल्यों को अच्छी तरह से समझता हूं, लेकिन किसी कारण से मैं मूल्यों की तुलना करने के लिए जो भी प्रयास करता हूं, मेरा प्रोग्राम कभी भी डुप्लिकेट मान नहीं देखता है।

यह काम क्यों नहीं करता?

  if new_value in b_dict.values():
    print("Password already exists...\n")
  else:
    add_to_dict(b_dict, new_key, new_value)
    print("\nPassword added successfully.\n")

पूरा कार्यक्रम:

def add_to_dict(dict, key, value):
  if key in dict:
    dict[key].append(value)
  else:
    dict[key] = [value]

if __name__ == "__main__":
  b_dict = {"att": ["12345"]}

  new_key = input("Please enter an organization ID to add: ")

  if new_key in b_dict:
    print("Organization exists, adding to this organization...")
  if new_key not in b_dict:
    print("Organization does not exist, adding it...")

  new_value = input("Please input a password: ")

  print("Adding password...")
  if new_value in b_dict.values():
    print("Password already exists...\n")
  else:
    add_to_dict(b_dict, new_key, new_value)
    print("\nPassword added successfully.\n")

  print(b_dict)

मुझे उम्मीद है कि जब उपयोगकर्ता att में प्रवेश करेगा, उसके बाद 12345 प्रोग्राम उन्हें सूचित करेगा कि पासवर्ड पहले से मौजूद है और फिर मूल शब्दकोश प्रिंट करें। इसके बजाय यह हमेशा डुप्लीकेट 12345 मान के साथ डिक्शनरी को प्रिंट करता है।

0
cVos 7 पद 2020, 10:47

2 जवाब

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

b_dict.values() में b_dict की सभी कुंजियों के सभी मान होंगे - जिसका अर्थ है, इसमें ['12345'] होगा लेकिन '12345' नहीं - मुझे लगता है कि आपको जो जांचना है वह है

if [new_value] in b_dict.values()

लेकिन यह इस विशेष मामले के लिए काम करेगा, और जैसे ही आप नए मान जोड़ते हैं, आपको या तो सभी चाबियों पर अलग-अलग लूप करने या मानों को फ़्लैट करने की आवश्यकता हो सकती है

0
Mortz 7 पद 2020, 11:19

क्या यह कोड आपकी समस्या का समाधान कर रहा है या नहीं?

  if key in dict:
    dict[key].append(value)
  else:
    dict[key] = [value]

def check_values(value,key) :
    if key in b_dict :
        return value in b_dict[key]
    else : 
        return False
if __name__ == "__main__":
  b_dict = {"att": ["12345"]}

  new_key = input("Please enter an organization ID to add: ")


  new_value = input("Please input a password: ")

  
  
  if check_values(new_value,new_key) == True :

      print("They already exist..")
  elif check_values(new_value,new_key) == False :
        print("They are not exits.. adding it")
        if new_key in b_dict :


            print("this Organization's password already exist")

        else :
            print("adding new organization and password")
            add_to_dict(b_dict, new_key, new_value)

  
print(b_dict)    
0
Viski 7 पद 2020, 11:35