Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyCharm警告:字典上的筛选器的类型意外_Python_Pycharm - Fatal编程技术网

Python PyCharm警告:字典上的筛选器的类型意外

Python PyCharm警告:字典上的筛选器的类型意外,python,pycharm,Python,Pycharm,我在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对filterlambda位置发出以下警告:标签中的位置[0],LOCATIONS.item

我在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对filterlambda位置发出以下警告:标签中的位置[0],LOCATIONS.items:


我应该如何对警告采取行动?相同的表达式,但在Dict[str,int]上,没有警告。所以我猜这与位置是一个Dict[str,List[str]]有关。

这是PyCharm的假阳性。它认为过滤器将返回迭代器[str],但情况并非如此,因为它的输入是dict_items,它是一个Iterable[Tuple[Any,Any]]

您还可以这样简化代码:

task_locations = {k: v for k, v in LOCATIONS.items() if k in labels}

在这种情况下,PyCharm不会抱怨。

我看到PyCharm检测出过滤器的输出Lambda位置:标签中的位置[0],位置.items是迭代器[str]。
但实际上它是可编辑的[tuple],所以运行oke的代码

谢谢。这就是我最后做的。此外,它允许我立即获得团队列表:teams_in_locations=[team for location,teams in locations.items if location in labels for team in teams]这显然是PyCharm中的一个bug。您应该简单地报告该bug,以便他们了解并修复它。
task_locations = {k: v for k, v in LOCATIONS.items() if k in labels}