在字典中访问其中的键和值

我在 python 中有一本字典,我想根据我拥有的键提取一些值。对于每一行,我有 3 个键(到达、dep、代码),有时它们都会出现,但有时只存在 1 或 2 个。如果存在键,我希望每一行都取值,否则将其设置为不可用或 0。这是我的示例数据:


示例数据


dict_items([('arrival', {'week': 3, 'timing': '15:30'}), ('code', '123')])


dict_items([('dep', {'week': 3, 'timing': '10:15'}), ('code', '456')])


dict_items([('arrival', {'week': 4, 'timing': '22:30'}), ('dep', {'week': '', 'timing': ''}), ('code', '567')])            


dict_items([('dep', {'week': 7, 'timing': '23:00'})    

输出包括 5 个列表


arrival_week_list []


arrival_timing_list []


dep_week_list []


dep_timing_list []


code []  

到目前为止,这是我的代码,我最初尝试过只是为了获得“到达”的一周(“dep”内也有一周)


for i in list:

    for row in i:

        try:

            arrival_week_list.append(i['week'])

        except KeyError:

                arrival_week_list.append(np.nan)

        print(arrival_week_list)

但我收到一个错误:TypeError: list indices must be integers or slices, not str


莫回无
浏览 122回答 2
2回答

缥缈止盈

您必须根据 中的键选择要在哪个列表中添加值dict,这是我的方法:data = {    'arrival': {        'week': [],        'timing': [],    },    'dep': {        'week': [],        'timing': [],    },    'code': []}for my_dict in my_list:    for key, values in my_dict.items():        if isinstance(values, dict):            for k, v in values.items():                data[key][k].append(v)        else:            data[key].append(values)arrival_week_list = data['arrival']['week']arrival_timing_list = data['arrival']['timing']dep_week_list = data['dep']['week']dep_timing_list = data['dep']['timing']code = data['code']print(arrival_week_list)print(arrival_timing_list)print(dep_week_list)print(dep_timing_list)print(code)输出:[3, 4]['15:30', '22:30'][3, '', 7]['10:15', '', '23:00']['123', '456', '567']

UYOU

错误来自行 ['week']。您的字典是一个列表,例如[('arrival', {'week': 3, 'timing': '15:30'}), ('code', '123')]您可能想要做的是a = [('arrival', {'week': 3, 'timing': '15:30'}), ('code', '123')]a[0][1]['week']3例如访问 3a[0] 给你一个元组 ('arrival, {'week': 3, 'timing': '15:30'}) 例如,a[0][1] 进入字典。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python