为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

莫回无 2022-07-12 09:44:48
我在 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
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

您必须根据 中的键选择要在哪个列表中添加值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']


查看完整回答
反对 回复 2022-07-12
?
UYOU

TA贡献1878条经验 获得超4个赞

错误来自行 ['week']。


您的字典是一个列表,例如


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

您可能想要做的是


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

a[0][1]['week']

3

例如访问 3


a[0] 给你一个元组 ('arrival, {'week': 3, 'timing': '15:30'}) 例如,a[0][1] 进入字典。


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信