無論您提到的是預期的行爲,爲什麼因爲DICTIONARY是一個無序的對象集合。
每當你做dict.items()可以迭代以任何順序,考慮你的榜樣本身:
def greet(language):
database = {'english': 'Welcome','czech': 'Vitejte','danish': 'Velkomst',
'welsh': 'Croeso'}
for k, v in database.items():
print "k,v :",k,v --> it may print you in any order
output:
Combination 1:
1) english': 'Welcome 2) danish': 'Velkomst 3) czech': 'Vitejte
4) welsh': 'Croeso
Combination 2:
1) welsh': 'Croeso 2) english': 'Welcome 3) czech': 'Vitejte
4) danish': 'Velkomst
and few more combinations will yield .....
所以,在你的榜樣你的第一次迭代比捷克其他就是這個原因你代碼總是返回歡迎。
爲了避免這種情況,要麼你可以去dict.get()或簡單地跟蹤變量 如下:
def greet(language):
var = 0 -> intialized var with 0
database = {'english': 'Welcome',
'czech': 'Vitejte',
'danish': 'Velkomst',
'welsh': 'Croeso'}
for k, v in database.items():
if k == language:
var = 1 -> if enterd in loop assign var = 1
return v
if (var != 1):
return('Welcome') -> if above compa'ion fails returns welcome
打印(迎( '捷'))
Vitejte
打印(迎接( 'zabcczech'))
歡迎
加+1答案,他想知道到底是什麼! – void