[英]Add new item to list of dictionaries controlling based on other item values
我有以下每年包含戶籍(HID)的詞典列表:
list_of_dicts = [{'HID':'1','year':'2017'},
{'HID':'1','year':'2018'},
{'HID':'2','year':'2017'},
{'HID':'2','year':'2018'},
{'HID':'3','year':'2017'},
{'HID':'3','year':'2018'}]
我想閱讀每個字典並添加一個新的數字ID。 我可以使用以下代碼執行與此類似的操作:
i = 0
for line in list_of_dicts:
line['id'] = i
i += 1
但是,這會使id
項像這樣連續運行:
list_of_dicts = [{'HID':'1','year':'2017','id':1},
{'HID':'1','year':'2018','id':2},
{'HID':'2','year':'2017','id':3},
{'HID':'2','year':'2018','id':4},
{'HID':'3','year':'2017','id':5},
{'HID':'3','year':'2018','id':6}]
我想每年將相同的數字id
變量分配給每個HID,如下所示:
list_of_dicts = [{'HID':'1','year':'2017','id':1},
{'HID':'1','year':'2018','id':1},
{'HID':'2','year':'2017','id':2},
{'HID':'2','year':'2018','id':2},
{'HID':'3','year':'2017','id':3},
{'HID':'3','year':'2018','id':3}]
如何控制每個家庭每年的ID分配相同?
您需要將其更改為不基於i
。 而是這樣做:
for line in list_of_dicts:
line['id'] = line['hid']
這樣,您將基於該行的hid
創建新的條目id
在Python3中,您可以使用列表推導和字典解壓縮:
list_of_dicts = [{'HID':'1','year':'2017'},
{'HID':'1','year':'2018'},
{'HID':'2','year':'2017'},
{'HID':'2','year':'2018'},
{'HID':'3','year':'2017'},
{'HID':'3','year':'2018'}]
new_data = [{**i, **{'id':i['HID']}} for i in list_of_dicts]
輸出:
[{'HID': '1', 'year': '2017', 'id': '1'}, {'HID': '1', 'year': '2018', 'id': '1'}, {'HID': '2', 'year': '2017', 'id': '2'}, {'HID': '2', 'year': '2018', 'id': '2'}, {'HID': '3', 'year': '2017', 'id': '3'}, {'HID': '3', 'year': '2018', 'id': '3'}]
這是你想要的?
list_of_dicts = [{'HID':'1','year':'2017'},
{'HID':'1','year':'2018'},
{'HID':'2','year':'2017'},
{'HID':'2','year':'2018'},
{'HID':'3','year':'2017'},
{'HID':'3','year':'2018'}]
for line in list_of_dicts:
line['id'] = line['HID']
print(list_of_dicts)
輸出:
[{'HID': '1', 'year': '2017', 'id': '1'}, {'HID': '1', 'year': '2018', 'id': '1'}, {'HID': '2', 'year': '2017', 'id': '2'}, {'HID': '2', 'year': '2018', 'id': '2'}, {'HID': '3', 'year': '2017', 'id': '3'}, {'HID': '3', 'year': '2018', 'id': '3'}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.