我有以下字典:
d = {}
d[1] = 'a'
d[2] = 'b'
d[3] = 'c'
d[4] = 'd'
我想對字串中的每個字符執行反向字典查找:
input_string = "bad"
當我在串列理解而不是嵌套的 for 回圈中執行此操作時,我會得到不同的結果,我不明白為什么。據我了解,串列理解和嵌套 for 回圈應該產生相同的結果。串列理解產生一個串列,其結果不是我期望的順序。我想要的結果是嵌套的 for 回圈提供的結果,但是我更喜歡使用串列推導來完成它。也許這與我不知道的python字典順序有關?
result1 = [key for key, value in d.items() for i in input_string if i == value]
print(result1)
> [1, 2, 4]
result2 = list()
for i in input_string:
for key, value in d.items():
if i == value:
result2.append(key)
print(result2)
> [2, 1, 4]
uj5u.com熱心網友回復:
為了模仿傳統的回圈,另一個回圈應該結束了input_string,對吧?
out = [k for i in input_string for k,v in d.items() if i==v]
輸出:
[2, 1, 4]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/471958.html
標籤:python-3.x 字典
