python dictionary comprehension获取子字典,其中值大于2

zid*_*sal 1 python python-3.3

所以我有一个名为self.outliers的字典,看起来像这样

{
"foo" : {"freq" : 7, "ids" : [1,2,3,4,5,6,7]},
"bar" : {"freq" : 2, "ids" : [8,9]}
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试提取频率>然后为2的所有键值我尝试过:

{(k, self.outliers.get(k)) for k in self.outliers if self.outliers[k]['freq'] > 1}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题,因为我一直在反对这个问题.

Mar*_*ers 5

你的语法混淆了; 删除括号并添加冒号:

{k: self.outliers[k] for k in self.outliers if self.outliers[k]['freq'] > 2}
Run Code Online (Sandbox Code Playgroud)

这也测试频率超过2而不是1.

你可以循环遍历这些项目:

{k: v for k, v in self.outliers.items() if v['freq'] > 2}
Run Code Online (Sandbox Code Playgroud)

演示:

>>> outliers = {"foo" : {"freq" : 7, "ids" : [1,2,3,4,5,6,7]},
...             "bar" : {"freq" : 2, "ids" : [8,9]}}
>>> {k: v for k, v in outliers.items() if v['freq'] > 2})
{'foo': {'freq': 7, 'ids': [1, 2, 3, 4, 5, 6, 7]}}
Run Code Online (Sandbox Code Playgroud)