繁体   English   中英

列表理解出错 output

[英]List comprehensions getting wrong output

data = [

[
    {'name': 'gan', 'age': 21}, {'name': 'esh', 'age': 22}
],

[
    {'name': 'rahul', 'age': 23}, {'name': 'rohan', 'age': 24}
]

]
u_names = [data['name'] for i in data for j in i if data['age'] > 21]
print(u_names)


line 38, in <module>
    if data['age'] > 21:
TypeError: list indices must be integers or slices, not str

我收到此错误是什么原因。

改成这样:

u_names = [j['name'] for i in data for j in i if j['age'] > 21]

data是一个嵌套列表。 j是内部实际迭代的dict object 。

如果您将对象重命名为更具描述性,您将看到结构:

u_names = [
    inner_dict['name']
        for inner_list in data
            for inner_dict in inner_list
                if inner_dict['age'] > 21
    ]

翻译为:

for inner_list in data:
    for inner_dict in inner_list:
        if inner_dict['age'] > 21:
            return inner_dict['name']

尝试以下操作:

u_names = [j['name'] 
for i in data:
    for j in i:
         if j['age'] > 21:
             print(u_names)

通过访问data['name'] ,您尝试访问原始数据数组上的属性name ,而不是您理解中分配给i的子数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM