我編了以下東西打印字典('one' : 1, 'tow' : 2, 'three' : 3)
。但錯誤出來了。任何人都可以回答爲什麼這樣嗎?關於python字典功能
length = []
class_one = [1, 2, 3]
class_two = ['one', 'two', 'three']
for x in class_one:
if x < 4:
length[class_two] = class_one
print(length)
我編了以下東西打印字典('one' : 1, 'tow' : 2, 'three' : 3)
。但錯誤出來了。任何人都可以回答爲什麼這樣嗎?關於python字典功能
length = []
class_one = [1, 2, 3]
class_two = ['one', 'two', 'three']
for x in class_one:
if x < 4:
length[class_two] = class_one
print(length)
length = {}
class_one = [1, 2, 3]
class_two = ['one', 'two', 'three']
for c1, c2 in zip(class_one, class_two):
if c1 < 4:
length[c2] = c1
print(length)
在這裏,這給你所需的輸出。基本上,您正在迭代class_one
,然後嘗試使用class_two
的整體作爲length
的關鍵字。在這裏,你遍歷兩個數組過來使用的值作爲鍵
這裏是你的代碼的修正版本:
length = {}
class_one = [1, 2, 3]
class_two = ['one', 'two', 'three']
for i, x in enumerate(class_two):
length[x] = class_one[i]
print(length)
與您的版本的問題是:
length dict
(您使用的是[]
,這是list
s;請使用{}
代替。)dict
:使用who le list
as key
這是錯誤的,因爲list
s不可排除,而不是你想要做的。或簡單地和更優雅:
length = dict(zip(class_two, class_one))
這是你的情況做的最好的方式(不考慮條件)。
他們都print
:{'one' : 1, 'two' : 2, 'three' : 3}
最後,你可以有字典理解版本,它是這樣的:
length = {k: v for k, v in zip(class_two, class_one)}
一個能想到的其他變化之中。請注意,這是針對您的案例的過量殺毒。
有條件
至於有條件去if x < 4:
不知道爲什麼你有沒有因爲與輸入,只要它沒有任何意義,但如果你確實需要它本例中,很容易重新實施。
作爲如何將看起來像看看下面的例子:
length = {k: class_one[i] for i, k in enumerate(class_two) if class_one[i] < 4}
或較短:
length = {class_two[i]: v for i, v in enumerate(class_one) if v < 4}
或發燒友(和甚至更短的):
length = {k: v for k, v in zip(class_two, class_one) if v < 4}
您應該在詞典理解中添加條件以顯示完整的大小寫。也許這個例子只是一個愚蠢的例子,而不是最終用例。 –
投票?不知道爲什麼。但我覺得這是很好的解決方案,但很好的解釋。 我的解決方案几乎相同。 '>>> {x:i for i,x in zip(class_one,class_two)} {'three':3,'two':2,'one':1}' – Ajay2588
@IgnacioVergaraKausel當然可以。 –
基本上'dict(zip(class_two,class_one))''。 –
@AshwiniChaudhary這並沒有考慮到條件,雖然 – dhdavvie