AttributeError: ‘list’ 对象没有属性 ‘items’
AttributeError: ‘list’ object has no attribute ‘items’
当我们items()
在列表而不是字典上调用方法时,会出现 Python“AttributeError: ‘list’ object has no attribute ‘items’”。要解决该错误,请调用items()
字典,例如通过访问特定索引处的列表或遍历列表。
下面是错误如何发生的示例。
my_list = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Alice'}, ] # ⛔️ AttributeError: 'list' object has no attribute 'items' print(my_list.items())
我们创建了一个包含 3 个字典的列表,并尝试调用items()
列表中导致错误的方法,因为这items()
是一个字典方法。
解决该错误的一种方法是访问特定索引处的列表元素。
my_list = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Alice'}, ] result = list(my_list[0].items()) print(result) # 👉️ [('id', 1), ('name', 'Alice')]
如果您需要items()
在列表中的所有词典上调用该方法,请使用
for
循环。
my_list = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Carl'}, ] for person in my_list: print(person.items())
dict.items方法返回字典
项((键,值)对)的新视图。
my_dict = {'id': 1, 'name': 'Alice'} print(my_dict.items()) # 👉️ dict_items([('id', 1), ('name', 'Alice')])
字典是包含在大括号中的键值对的集合,而列表是一系列以逗号分隔的项目。
如果您需要在列表中查找字典,请使用生成器表达式。
my_list = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Carl'}, ] result = next( (item for item in my_list if item['name'] == 'Bob'), {} ) print(result) # 👉️ {'id': 2, 'name': 'Bob'} print(result.get('name')) # 👉️ "Bob" print(result.get('id')) # 👉️ 2 print(result.items()) # 👉️ dict_items([('id', 2), ('name', 'Bob')])
示例中的生成器表达式查找name
具有值为 的键Bob
的字典并返回该字典。
name
key with a value of Bob
, the generator expression would return an empty dictionary.If you need to find all dictionaries in the list that match a condition, use the
filter()
function.
my_list = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Alice'}, ] new_list = list( filter(lambda person: person.get('name') == 'Alice', my_list) ) # 👇️ [{'id': 1, 'name': 'Alice'}, {'id': 3, 'name': 'Alice'}] print(new_list)
items()
method on a list instead of a dictionary.You can view all the attributes an object has by using the dir()
function.
my_list = ['a', 'b', 'c'] # 👉️ [... 'append', 'clear', 'copy', 'count', 'extend', 'index', # 'insert', 'pop', 'remove', 'reverse', 'sort' ...] print(dir(my_list))
If you pass a class to the
dir() function, it
returns a list of names of the class’s attributes, and recursively of the
attributes of its bases.
如果您尝试访问不在此列表中的任何属性,您将收到“AttributeError:列表对象没有属性”错误。
由于items()
不是lists实现的方法,所以报错。
结论
当我们items()
在列表而不是字典上调用方法时,会出现 Python“AttributeError: ‘list’ object has no attribute ‘items’”。要解决该错误,请调用items()
字典,例如通过访问特定索引处的列表或遍历列表。