发布于 2014-06-01 05:53:20
基于“更多...”截图显示,Pycharm可能会将map()解释为逗号周围的两个术语都是lambda的一部分,即lambda只返回一个2元组,而不是将其视为map()函数的两个参数。
可以尝试的内容:
混淆的内置map()的重新定义
编辑
您激励我去学习更多关于Python和Pycharm的知识。:)
看起来Pycharm更喜欢使用列表理解而不是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是在推动我们朝着这个方向前进?
发布于 2016-11-07 23:29:27
如果使用get()从字典中获取值,也可以取消此通知。这应该是可行的:fresh_urls = {item.get('url') for item in items}
https://stackoverflow.com/questions/23962434
复制相似问题