我可以过滤以下字典,如:
data = {
1: {'name': 'stackoverflow', 'traffic': 'high'},
2: {'name': 'serverfault', 'traffic': 'low'},
3: {'name': 'superuser', 'traffic': 'low'},
4: {'name': 'mathoverflow', 'traffic': 'low'},
}
traffic = 'low'
for k, v in data.items():
if v['traffic'] == traffic:
print k, v
是否有另一种方法可以进行上述过滤?
答案 0 :(得分:2)
当然,但他们都是蛮力。
dict((k, v) for (k, v) in data.iteritems() if v['traffic'] == traffic)
答案 1 :(得分:2)
在某种程度上,过滤器必须完全按照您的描述进行操作。如果您要对值进行过滤,则必须逐个处理每个值。
答案 2 :(得分:2)
如果你这么做很多,你可以有两个词典,每个方向一个。新字典会将值映射到值列表。如果您不止一次进行反向查找,这是个好主意。
答案 3 :(得分:1)
原则上 - 没有。您可以稍微重写代码,但它仍然会执行相同的操作 - 遍历所有值。