我有这样的字典
my_d = {"a": [1, 2, 2, 5, 2],"b": [2, 1, 2, 4, 5],"c": [7, 2, 2, 6, 2],"d": [7, 2, 2, 2, 1]}
我正在寻找字典值包含" 2且少于2"超过两次。在示例中,那将是" a"," b"," c"," d"。以下代码仅查找字典值包含2次以上的代码:
for key, item in my_d.items():
if item.count(2) > 2:
print key,
答案 0 :(得分:1)
您可以对项目进行排序,并检查前两个元素是否≤2:
>>> for key, item in my_d.items():
... i=sorted(item)
... if all(map(lambda x:x<=2,i[:2])):
... print key,
...
a c b d
或者,因为您只有2个要检查的元素:
>>> for key, item in my_d.items():
... i=sorted(item)
... if i[0]<=i[1]<=2:
... print key,
...
a c b d
答案 1 :(得分:1)
[key for key, item in my_d.items() if len([i for i in item if i<3]) > 2]
答案 2 :(得分:0)
以下内容应该有效,这是一个简单的generator expression
for key, item in my_d.items():
if len ([x for x in item if x <= 2]) > 2:
print key
它的作用是构建item
中小于或等于2的所有元素的列表,并检查生成列表的长度。
答案 3 :(得分:0)
print [k for k, v in my_d.items() if len(filter(lambda x: x <= 2, v)) > 2] # ['a', 'c', 'b', 'd']
答案 4 :(得分:0)
你可以这样做 -
f1 = lambda x: [obj for obj in x if obj <= 2]
results = [k for k, v in d1.items() if len(f1(v)) >= 2]
在每个值上运行lambda函数
答案 5 :(得分:0)
>>> my_d = {"a": [1, 2, 2, 5, 2],"b": [2, 1, 2, 4, 5],"c": [7, 2, 2, 6, 2],"d": [7, 2, 2, 2, 1],"e":[1,3,4,2,6]}
>>> [k for k,v in my_d.items() if len([i for i in v if i<3])>2]
['a', 'c', 'b', 'd']