AttributeError: ‘list’ 对象没有属性 ‘items’

AttributeError: ‘list’ 对象没有属性 ‘items’

AttributeError: ‘list’ object has no attribute ‘items’

当我们items()在列表而不是字典上调用方法时,会出现 Python“AttributeError: ‘list’ object has no attribute ‘items’”。要解决该错误,请调用items()字典,例如通过访问特定索引处的列表或遍历列表。

attributeerror 列表对象没有属性项

下面是错误如何发生的示例。

主程序
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的字典并返回该字典。

We used an empty dictionary as a fallback, so if dictionary in the list has a 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.

main.py
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)
The “AttributeError: ‘list’ object has no attribute ‘items'” occurs when we try to call the items() method on a list instead of a dictionary.

You can view all the attributes an object has by using the dir() function.

main.py
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()字典,例如通过访问特定索引处的列表或遍历列表。