我想要做的是提取字典的值來進行計算。我的字典只有一個值。但是我無法使用字典值進行計算( -*/),也找不到將值分配給int變數的方法。
a = {'number': 5}
b = a.values()
c = b*3
print(c)
該代碼產生錯誤:
TypeError: unsupported operand type(s) for *: 'dict_values' and 'int'
uj5u.com熱心網友回復:
a.values()將字典的所有值作為 a回傳dict_values。
當然,在您的情況下,這只是一個值,但它仍然是那種形式。
在這種情況下會起作用的一件事:
a = {'number': 5}
b = a.values()
c = list(b)[0]*3
print(c)
它dict_values本身是字典值的所謂視圖,原因有點過于復雜,無法在此處介紹 - 但結果它們無法直接索引,因此c = b[0]*3也不起作用。
相反,通過將 a 傳遞給函式將其dict_values轉換為 a ,該函式接受任何可迭代的(如)并從中創建一個串列。并且可以被索引,因此獲取值串列,選擇第一個 ( ) 元素,并將其乘以。listlist()dict_valueslist list(b)[0]*3[0]3
但更有意義的是:
a = {'number': 5}
b = a['number']
c = b*3
這只是按預期使用字典并'number'通過使用 key 索引字典來選擇值a['number']。
或者:
a = {'number': 5}
b = list(a.values())
c = [x*3 for x in b]
由于字典可能有多個值,您還可以獲取值串列并將每個元素分別乘以 3。但結果必須是另一個集合,就像這樣list。
uj5u.com熱心網友回復:
此外,如果您不想使用串列或串列推導,您可以簡單地使用:
a = {'number': 5}
for x in a.values():
b=int(x)
c = b*3
或者正如我評論的:
a = {'number': 5}
b = a['number']
c = b*3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479599.html
上一篇:PythonDFS嵌套字典
