繁体   English   中英

for循环列表中的python dict

[英]python dict in list on for loop

我不明白为什么这两个陈述不相等。

for item in tree.findAll('item'):
    names = [{
      'id': item.id.string,
      'title': __decodefunction(item.entitle.string)
    }]

它有1项,但如果这些声明

names = [{
    'id': item.id.string,
    'title': __decodefunction(item.entitle.string)
}for item in tree.findAll('item')]

它有6个项目。

我想使用第一个循环,但它没有显示正确的项目数。 正确的输出是6项。

他们做了很多不同的事情。

第一个在循环的每次迭代中定义一个新的names值,替换任何先前的值。 每次创建一个包含一个字典的新列表。

第二个是列表推导,它构建一个由0个或更多字典组成的列表,每个字典对应一个由tree.findAll()返回的元素。

要使第一个等效于第二个,您需要先将names定义为空列表,然后在循环中追加到它:

names = []
for item in tree.findAll('item'):
    names.append({
      'id': item.id.string,
      'title': __decodefunction(item.entitle.string)
    })

我明白了

只是改变这个

names = []
for item in tree.findAll('item'):
    names.extend([{
       'id': item.id.string,
       'title': __decodefunction(item.entitle.string)
    }])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM