我在PyCharm中有以下代码:
LOCATIONS = {'loc1': [a, b, c], 'loc2': [d, e], 'loc3': [f, g]}
labels = ['loc2', 'loc3']
task_locations = dict(filter(lambda location: location[0] in labels, LOCATIONS.items()))
PyCharm发出以下警告filter(lambda location: location[0] in labels, LOCATIONS.items())
:
Unexpected type(s):
(Iterator[str])
Possible types:
(Mapping)
(Iterable[Tuple[Any, Any]])
我应该如何对警告采取行动?相同的表达式,但在上Dict[str, int]
,没有警告。所以我想这与LOCATIONS
成为一个人有关Dict[str, List[str]]
。
来自PyCharm的错误肯定。它认为,过滤器将返回Iterator[str]
这是不是这样的,因为它的输入是dict_items
这是一个Iterable[Tuple[Any, Any]]
。
您还可以像这样简化代码:
task_locations = {k: v for k, v in LOCATIONS.items() if k in labels}
而且PyCharm在这种情况下不会抱怨。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句