是否可以在字典中迭代列表?看起来像一个复杂的语法。
URLS = ['http://www.foxnews.com/',
'http://www.cnn.com/',
'http://europe.wsj.com/',
'http://www.bbc.co.uk/',
'http://some-made-up-domain.com/']
future_to_url = {executor.submit(load_url, url, 60): url for url in URLS}
答案 0 :(得分:3)
你正在看dictionary comprehension;它从循环中构建一个字典。
相当于:
future_to_url = {}
for url in URLS:
future_to_url[executor.submit(load_url, url, 60)] = url
但拼写更简洁。
可以做同样的事情来产生一个清单:
[executor.submit(load_url, url, 60) for url in URLS]
或设置:
{executor.submit(load_url, url, 60) for url in URLS}
或在生成器表达式中懒惰地生成元素:
(executor.submit(load_url, url, 60) for url in URLS)
请参阅Python教程的List Comprehensions section,然后再解释其他解释。
Dict理解需要Python 2.7或更新版本;如果你需要将它移植回较旧的Python版本,你可以在dict()
函数中使用生成器表达式语法来生成(key, value)
元组:
dict((executor.submit(load_url, url, 60), url) for url in URLS)