[英]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.