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

在列表中提取字典的值

在列表中提取字典的值

吃鸡游戏 2022-07-12 15:57:51
据我了解,我在列表中有以下字典:[{'week': 3, 'timing': '07:30'}, {'week': 4, 'timing': '20:30'},{},....]我想提取时间和星期并将它们放在单独的列表中。但是,由于外面有一个列表,因此无法识别密钥。我试图做的是以下内容:for item in list:     new_list =list( item.values() )[0]但它显示了一个错误,因为我认为其中一些是空白的。目前,我收到错误:IndexError: list index out of range。如何将它们提取到两个单独的列表并在它们为空白的地方有一个 NaN?
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

您首先创建两个列表并附加项目。应该对列表中的每个对象进行迭代,每个对象都是字典本身。假设包含字典的列表被称为full_list,因为命名它对listpython 来说不太方便。


week_list = []

timing_list = []


for i in full_list:

   week_list.append(i['week'])

   timing_list.append(i['timing'])

如果有空值的字典,或者空字典,或者只有week但没有timing的字典,例如,我喜欢使用:


import numpy as np

for i in full_list:

    try:

       week_list.append(i['week'])

    except KeyError:

       week_list.append(np.nan)

    try:

       timing_list.append(i['timing'])

    except KeyError:

        timing_list.append(np.nan)

这样NaN,只要键不存在,您就会在列表中附加一个值,如果您稍后对列表执行操作,这将很有帮助。


完整示例:


full_list = [{'week': 3, 'timing': '07:30'}, {'week': 4, 'timing': '20:30'},{},{'week':4},{'timing':'09:21'},{}]

week_list = []

timing_list = []

import numpy as np

for i in full_list:

    try:

       week_list.append(i['week'])

    except KeyError:

       week_list.append(np.nan)

    try:

       timing_list.append(i['timing'])

    except KeyError:

        timing_list.append(np.nan)

print(week_list)

print(timing_list)

输出:


[3, 4, nan, 4, nan, nan]

['07:30', '20:30', nan, nan, '09:21', nan]

编辑:

如果字典是这样的:


full_dict = {'person_1':{'week': 3, 'timing': '07:30'},'person_2':{'week': 4, 'timing': '20:30'},'person_3':{}}

迭代应该按 each 进行key。因此循环将是:


for i in full_dict.keys():

    and exactly the same code as before


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

TA贡献1829条经验 获得超9个赞

我使用此代码分别提取它们。


weeks = [ a['week'] for a in new_list ]


timings = [ a['timing'] for a in new_list ]


查看完整回答
反对 回复 2022-07-12
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

以下代码将帮助分别提取周和时间值


check = [{'week': 3, 'timing': '07:30'}, {'week': 4, 'timing': '20:30'}]

week_list = []

timing_list=[]

for i in check:

    for k,v in i.items():

        if k == 'week':

            week_list.append(v)

        else:

            timing_list.append(v)



Output

```[3, 4]

['07:30', '20:30']


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号