我有一本字典。如果字典中的鍵在專案中,我想用相應的字典值替換串列的專案。例如,如果鍵“C”在任何類似“CCC”的專案中,它將用相應的字典值替換“CCC”。這是我的代碼。
l=['0', 'CCC', '0', 'C', 'D', '0']
dic={"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6, "G": 7, "U": 8}
for i in l:
for k, v in dic.items():
if k in i: i=str(v)
print(l)
我想要得到的是:l = ['0', '3', '0', '3', '4', '0']
但名單根本沒有改變。我在這里做錯了什么?
uj5u.com熱心網友回復:
字典沒有改變,因為當您使用for i in l:新物件迭代串列時,會i從串列中獲取值。然后,您將i使用字典中的適當值更改 的值。但是,您只是在更改 object 的值i。如果要更改串列中的值,則應直接修改串列。您可以更改if k in i: i=str(v)為if k in i: l.insert(l.index(i), v). 這將首先在串列中找到鍵的位置(索引),然后在該索引中插入關聯的值。
完整代碼:
l=['0', 'CCC', '0', 'C', 'D', '0']
dic={"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6, "G": 7, "U": 8}
for i in l:
for k, v in dic.items():
if k in i: l.insert(l.index(k), v)
print(l)
uj5u.com熱心網友回復:
根據您的評論,您可以使用此示例替換 list 中的值l:
l = ["0", "CCC", "0", "C", "D", "0"]
dic = {"A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6, "G": 7, "U": 8}
out = [str(dic.get(list(set(v))[0], v)) for v in l]
print(out)
印刷:
['0', '3', '0', '3', '4', '0']
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/492330.html
