按字典键的关联值的函数筛选字典键

2024-04-26 15:06:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本这样的字典

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,

Tags: key代码inforif字典mycount
3条回答

您可以对项目进行排序,并检查前两个元素是否≤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
[key for key, item in my_d.items() if len([i for i in item if i<3]) > 2]

下面应该可以,这是一个简单的generator expression

for key, item in my_d.items():
    if len ([x for x in item if x <= 2]) > 2:
        print key

它所做的是构建item中小于或等于2的所有元素的列表,并检查生成的列表的长度。你知道吗

相关问题 更多 >