我将尝试从字典中简洁地创建一个列表。
以下代码可行:
我本以为会得到类似的输出,但实际返回了:
我找到了这个相关的解决方案,但是执行以下操作会输出标题(好耶!)三次(不好!):
以下代码可行:
def main():
newsapi = NewsApiClient(api_key=API_KEY)
top_headlines = newsapi.get_everything(q="Merkel",language="en")
news = json.dumps(top_headlines)
news = json.loads(news)
articles = []
for i in news['articles']:
articles.append(i['title'])
print(articles)
输出:
['Merkel “Helix Suppressor” Rifle and Merkel Suppressors', 'Angela Merkel',
'Merkel says Europe should do more to stop Syria war - Reuters',
'Merkel says Europe should do more to stop Syria war - Reuters',
'Merkel muss weg! Merkel has to go! Demonstrations in Hamburg', ... ,
"Bruised 'Queen' Merkel Lives..."]
但我在其他地方看到了列表推导式,并一直在尝试学习。用以下列表推导式替换for i in news['articles']:
def main():
...
articles = []
articles.append(i['title'] for i in news['articles'])
print(articles)
我本以为会得到类似的输出,但实际返回了:
[<generator object main.<locals>.<genexpr> at 0x035F9570>]
我找到了这个相关的解决方案,但是执行以下操作会输出标题(好耶!)三次(不好!):
def main():
...
articles = []
articles.append([i['title'] for x in news for i in news['articles']])
print(articles)
通过列表推导式生成文章的正确方式是什么?
忽略我在main()
中有例程而不是函数调用的事实。我稍后会修复它。
(i['title'] for i in news['articles'])
是一个生成器表达式。您是否意图将其传递给extend
而非append
? - zvonearticles = [i['title'] for i in news['articles']]
:D - BruceWayne