Python 为什么我得到';列表';对象没有属性';项目';?

Python 为什么我得到';列表';对象没有属性';项目';?,python,python-2.7,Python,Python 2.7,使用Python 2.7,我有以下列表: qs = [{u'a': 15L, u'b': 9L, u'a': 16L}] 我想从中提取值 i、 e.[15,9,16] 所以我试着: result_list = [int(v) for k,v in qs.items()] 但是,我得到了这个错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError

使用Python 2.7,我有以下列表:

qs = [{u'a': 15L, u'b': 9L, u'a': 16L}]
我想从中提取值

i、 e.
[15,9,16]

所以我试着:

result_list = [int(v) for k,v in qs.items()]
但是,我得到了这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'items'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:“列表”对象没有属性“项”
我想知道为什么会发生这种情况,以及如何解决它

result_list = [int(v) for k,v in qs[0].items()]

qs是一个列表,qs[0]是您想要的目录

字典不支持重复键-因此您将获得最后一个键,即
a=16
,但不支持第一个键
a=15

>>>qs = [{u'a': 15L, u'b': 9L, u'a': 16L}]
>>>qs
>>>[{u'a': 16L, u'b': 9L}]
>>>result_list = [int(v) for k,v in qs[0].items()]
>>>result_list
>>>[16, 9]

items是dict对象的一个属性。也许您可以试试

qs[0].items()

如果
qs
有多个词典,则使用更通用的方法:

[int(v) for lst in qs for k, v in lst.items()]
--


列表中有一本词典。您必须首先从列表中提取词典,然后处理词典中的项目

如果您的列表包含多个词典,并且希望将每个词典的值存储在列表中(如图所示),请执行以下操作:

result_list = [[int(v) for k,v in d.items()] for d in qs]
result_list = [int(v) for d in qs for k,v in d.items()]
这与:

result_list = []
for d in qs:
    result_list.append([int(v) for k,v in d.items()])
以上内容将每个字典中的值保留在各自的单独列表中。如果您只想将所有值放在一个大列表中,可以执行以下操作:

result_list = [[int(v) for k,v in d.items()] for d in qs]
result_list = [int(v) for d in qs for k,v in d.items()]

如果您不关心数字的类型,您可以简单地使用:

qs[0].values()

这是不对的。我可以从
[15,9,16]
获取qs[0]中k,v的int(v)。items()]@Jand您100%确定吗?因为在每个版本的python中,字典都必须有唯一的键。也许你在问题中输入了一个错误,意思是第三个条目是
u'c':16L
或类似的?但它不会输出
[15,9,16]
@Slsam它会输出。试过了。肯定不会对
qs=[{u'a':15L,u'b':9L,u'a':16L}]
如您在原始问题中所述,该词典只包含2个条目,因为每个条目必须有一个唯一的键,并且
'a'
使用了两次<代码>'a':15不在字典中。此外,项目的顺序也不一定与添加顺序相同。很棒的提示。我要用这个。不要仅仅因为它不是对OP的直接回应就接受它作为答案。