如果我有一個字典,每個鍵都有一個值串列,例如:
my_dict={'key1':[1, 6, 7, -9], 'key2':[2, 5, 10, -5,], 'key3':[-8, 1, -2, 6]}
我想創建一個回圈陳述句來遍歷串列中的每個值,并將字典中的值更改為 0 以表示每個負值。我可以創建一個回圈陳述句來遍歷每個值并檢查該值是否為負,但我無法弄清楚如何直接修改字典:
for keys, values in my_dict.items():
for value in values:
if value < 0:
value=0
如何更改最后一行(或者我是否必須更改更多行)以便能夠直接修改我的字典以將負值替換為 0?
提前致謝
uj5u.com熱心網友回復:
一種方法是迭代.items字典的 并直接覆寫每個值enumerate以跟蹤索引:
my_dict={'key1':[1, 6, 7, -9], 'key2':[2, 5, 10, -5,], 'key3':[-8, 1, -2, 6]}
for key, value in my_dict.items():
for i, val in enumerate(value):
value[i] = 0 if val < 0 else val
print(my_dict)
輸出
{'key1': [1, 6, 7, 0], 'key2': [2, 5, 10, 0], 'key3': [0, 1, 0, 6]}
使用切片運算子和串列理解的替代方法:
for key, value in my_dict.items():
value[:] = [0 if val < 0 else val for val in value]
其他一些有用的資源:
- Looping Techniques,討論 Pythonic 的回圈方法
- 用于理解變數在 Python 中如何作業的Python 名稱和值
- 切片分配對第二種方法如何作業的一些了解
uj5u.com熱心網友回復:
在嵌套理解中使用 max:
my_dict = {k: [max(0, v) for v in vals] for k, vals in my_dict.items()}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/312943.html
上一篇:遍歷字典串列并列印訊息
