python list append vs extend for dictionaries

时间:2014-09-16 13:05:43

标签: python list dictionary

我对列表中应该包含字典的python' appendextend有一些混淆:

holder = []

element = {}

element["id"] = 1
element["value"] = 2

holder.append(element)

print(holder)

按预期打印[{'id': 1, 'value': 2}]

但是,如果我使用:holder.extend(element)代替holder.append(element),则输出将为:['id', 'value']

有人可以解释我为什么吗? (append vs. extend不适用于此)

2 个答案:

答案 0 :(得分:5)

list.extend()采用iterable并附加iterable的所有元素。默认情况下,字典会遍历其键,因此所有键都会附加到列表中。

list.append()将对象原样并将其添加到列表中,这正是代码中发生的事情。

答案 1 :(得分:1)

执行append,它会添加一个字体element 正在执行extend,如果element是列表,则会添加element的每个内容:

>>> element = {}
>>> element["id"] = 1
>>> element["value"] = 2
>>> list(element)
['id', 'value']

在字典的情况下,它会迭代键。