1

我有以下字典列表,其中包含每年的家庭 ID (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 分配相同?

4

3 回答 3

1

在 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'}]
于 2018-04-24T19:59:24.477 回答
1

您需要将其更改为不基于i. 而是这样做:

for line in list_of_dicts:
    line['id'] = line['hid']

这样您就可以id根据hid该行创建一个新条目

于 2018-04-24T19:53:18.270 回答
0

这是你想要的?

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'}]
于 2018-04-24T19:53:42.067 回答