我有一個字典串列
list1 = [{'time': '2020', 'name': 'one', 'address': '15423'},{'time': '2021', 'name': 'two', 'address': '8548305'}, {'time': '2019', 'name': 'five', 'address': '15423'}]
我想將地址為 15423 的任何內容轉換為“有效”以及所有其他情況無效的最終輸出
list1 = [{'time': '2020', 'name': 'one', 'address': 'Valid'},{'time': '2021', 'name': 'two', 'address': 'Invalid'}, {'time': '2019', 'name': 'five', 'address': 'Valid'}]
這是我嘗試過的
if '15423' in list1['address']:
list1['address'] = 'Valid'
else:
list1['address'] = 'Invalid'
但我不確定為什么它不起作用。也許我需要遍歷整個專欄。感謝你的幫助
uj5u.com熱心網友回復:
您需要遍歷list1使用for回圈的元素,因為list1是字典串列:
for i in range(len(list1)):
if '15423' in list1[i]['address']:
list1[i]['address'] = 'Valid'
else:
list1[i]['address'] = 'Invalid'
print(list1)
if/else如果您正在尋找更簡潔的解決方案,您還可以將其壓縮為三元:
for i in range(len(list1)):
list1[i]['address'] = 'Valid' if '15423' in list1[i]['address'] else 'Invalid'
這兩個列印:
[{'time': '2020', 'name': 'one', 'address': 'Valid'},
{'time': '2021', 'name': 'two', 'address': 'Invalid'},
{'time': '2019', 'name': 'five', 'address': 'Valid'}]
uj5u.com熱心網友回復:
你必須遍歷串列!
為什么?
比方說num_list = [0, 1, 2, 3]
使用for這樣的回圈:
for item in num_list:
...
num_list將按您的預期回圈。item將設定為當前值,在這種情況下,它將設定item為1,執行回圈中的代碼,然后設定item為2,然后再次執行回圈中的代碼,依此類推。
現在讓我們說num_list = [{"number": 0}, {"number": 1}, {"number": 2}, {"number": 3}]。
這一次,如果你運行相同的for回圈,item仍然會被設定為當前值,在這種情況下,它會將其設定為字典而不是數字。因此,item設定為{"number": 0},則回圈內的代碼將運行,然后item設定為{"number": 1},則回圈內的代碼將再次運行,等等。
因此,item將設定為字典,屆時您可以像任何其他字典一樣對其進行編輯!簡單地做item["number"] = ...
對于實際的固定代碼,來吧
list1 = [
{'time': '2020', 'name': 'one', 'address': '15423'},
{'time': '2021', 'name': 'two', 'address': '8548305'},
{'time': '2019', 'name': 'five', 'address': '15423'}
]
for item in list1:
if item["address"] == "15423":
item["address"] = "Valid"
else:
item["address"] = "Invalid"
print(list1)
輸出:
[
{'time': '2020', 'name': 'one', 'address': 'Valid'},
{'time': '2021', 'name': 'two', 'address': 'Invalid'},
{'time': '2019', 'name': 'five', 'address': 'Valid'}
]
uj5u.com熱心網友回復:
大部分人都回答了這個問題。請參閱以下解決方案以了解幾點:
您在串列中有字典,因此您需要首先遍歷每個元素并訪問字典。迭代時檢查地址鍵是否存在于字典中,然后應用 if 條件。如果我們使用item['address'],那么如果我們在任何字典中都沒有找到地址鍵,那么代碼可能會中斷。因此用于item.get('address')提取值。
這是代碼:
list1 = [
{'time': '2020', 'name': 'one', 'address': '15423'},
{'time': '2021', 'name': 'two', 'address': '8548305'},
{'time': '2019', 'name': 'five', 'address': '15423'}
]
for item in list1:
if item.get('address'):
if item.get('address')== "15423":
item["address"] = "Valid"
else:
item["address"] = "Invalid"
print(list1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447800.html
上一篇:使用字典中的專案映射串列中的元素
