如果从字典中获取值,也可以删除此通知 get() 。这应该工作: fresh_urls = {item.get('url') for item in items}
get()
fresh_urls = {item.get('url') for item in items}
基于'more ...'截图,看起来像Pycharm可能正在解释map(),好像逗号周围的两个术语都是lambda的一部分,即lambda只返回一个2元组而不是处理它作为map()函数的两个参数。
要尝试的事情:
编辑
你激励我去了解Python和Pycharm的更多信息。 :)
看起来Pycharm使用列表理解比使用列表理解更快乐 map() 。使用此示例数据:
map()
data = { 'data': { 'children': [ {'data': {'url': 'http://1.com/', }, }, {'data': {'url': 'http://2.com/', }, }, ] }, }
如果你像你一样编写代码,那么你得到错误:
items = map(lambda children: children['data'], data['data']['children']) for item in items: print item['url'] # Pycharm shows warning on 'url'
但是如果你使用列表理解,那么Pycharm很高兴:
items = [x['data'] for x in data['data']['children']] for item in items: print item['url'] # No warning from Pycharm
两者的输出相同。
ISTR阅读列表理解优先于 map() 如今无论如何,也许Pycharm正朝这个方向推动我们?