簡體   English   中英

如何在 For 循環 Python 中按字典中的鍵獲取值

[英]How to get Values by Keys in Dictionary in For loop Python

我有這個代碼:

mylist = {'a':1,'b':2,'c':3}
char = input('Enter char: ')
print(mylist[char])

它工作正常,但是當我將其更改為:

mylist = {'a':1,'b':2,'c':3}
char = input('Enter char: ')
for char in mylist:
    if mylist[char] == char:
        print(mylist[char])

它不返回任何值,也不給出錯誤消息。

有什么遺漏或錯誤?

謝謝!

BR,瓦爾特斯

首先,不要在這里char稱兩件事相同。 當您迭代dict時,您會獲得keys ,並且您需要使用這些密鑰檢查是否相等

mylist = {'a':1,'b':2,'c':3}
char = input('Enter char: ')
for key in mylist:
    if key == char:
        print(mylist[key])

但是這樣做會使使用dict的所有目的消失,你失去了只做mylist[char]的性能

mylist = {'a':1,'b':2,'c':3}
char = input('Enter char: ')
if char in mylist.keys():
  print mylist.get(char, None)

在您的代碼中,您實際上是在嘗試將您的鍵與字典值進行比較,但它失敗了。

我希望我回答了你的問題。

循環勺中的 char 指的是 mylist 的鍵,因此當您在循環中執行if mylist[char] == char時,它會檢查鍵是否等於值。
這就是每次迭代在循環內部的樣子。

mylist[char] 1 char a
mylist[char] 2 char b
mylist[char] 3 char c

所以在第二個例子中,它沒有進入 if 語句,它會為你創建一個所有行的列表,你可以一遍又一遍地對其進行迭代。
你可以做

mylist = {'a':1,'b':2,'c':3}
char = input('Enter char: ')
if char in mylist:
    print(mylist[char])
mylist = {'a':1,'b':2,'c':3}
char = input('Enter char: ')

for char in mylist:
   if mylist[char] == char:
      print(mylist[char])

這樣做的問題是,當您遍歷字典時,您正在檢查是否返回 false 的key==value ,因此沒有打印任何內容。

for char in mylist這里 char 值是鍵,因此對於您的方法,您必須修改if條件。 而不是使用輸入的字符檢查鍵值檢查鍵。

所以這將是這樣的:

for key in mylist:
   if key == char:
      print(mylist[char])

而且,您可以簡單地執行以下操作,而不是使用循環和 if 條件:

if char in mylist:  # it checks if char is present in dict's key or not
   print(mylist[char])

是的,它不起作用,原因是

mylist = {'a':1,'b':2,'c':3}

char = input('Enter char: ') // <- 在這里您將用戶輸入分配給變量 char。

for char in mylist: // <- 變量 char 再次被賦予不同的值,即字典中的鍵

if mylist[char] == char: // <- 所以這里在第一次迭代中 char 將是 "mylist[char] " 中的 "a",它與 char "a" 進行比較,所以條件如下。

mylist["a"] == a // <- 但是這里的值將是“ 1 == a ”,因為這個條件不成立

print(mylist[char]) // <- 不執行打印語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM