簡體   English   中英

將新項目添加到基於其他項目值進行控制的詞典列表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM