我有一个包含字典的列表,我想将该列表中的每个第三个条目添加到一个新条目中 该列表如下所示:
result = [{"link": "example.com", "text": "Some description"}, {"link": "example2.com", "text": "lorem ipsum"}] ...
现在我的循环看起来像这样:
for i in range(0, len(list), 3):
cleanresults.extend(list[i])
但不是复制整个列表,而是只添加键
["link", "text", "link", "text"]
我做错了什么?
答案 0 :(得分:6)
您希望追加,而不是延伸:
for i in range(0, len(list), 3):
cleanresults.append(list[i])
Extending从您传入的对象中添加包含的元素;当您遍历字典时,您会获得密钥,然后将这些密钥添加到cleanresults
列表中,而不是字典本身。
更干净地说,你可以创建原始列表的副本,每个第3个元素都带有slice:
cleanresults = list[::3]
如果您不想复制,但只需要在迭代时访问每个第三个元素,您还可以使用itertools.islice()
object:
from itertools import islice
for every_third in islice(list, 0, None, 3):
# do something with every third dictionary.
答案 1 :(得分:4)
你可以试试这个:
result = [{"link": "example.com", "text": "Some description"}, {"link": "example2.com", "text": "lorem ipsum"}] ...
new_result = result[::3] #this list slicing will take every third element in the result list
输出:
[{'text': 'Some description', 'link': 'example.com'}]