有没有一种方法可以通过字典中的值获取其对应的键?

3

我已经编写了一个小程序,使用lambda函数从字典中过滤掉所有的负值。我需要再次将它写成一个字典,没有负值。似乎在3.x标准中不支持index()函数。任何关于如何编写此代码的指针都会很有帮助。

a = {'a':1,'b':-5,'c':-4,'d':-8,'e':9}
key = a.keys()
val = a.values()
l1 = list(filter(lambda x:x>0,val))
print(l1)

另一个限制是:我必须使用lambda函数。因此,使用回答中提到的推导式将不被允许。我看到过这个问题可能是重复的问题:但是在那里抽样其中一个答案后,我尝试了以下代码:

    dict(filter(lambda x,y:y>=0,a.items()))

我遇到了这个问题: TypeError: ()缺少1个必需的位置参数:'y'


在3.6及以上版本中,字典按插入顺序排序;在早期版本中,建议使用OrderedDict - meowgoesthedog
1
XY问题。如果你试图过滤一个字典,创建一个仅包含值而没有键的列表只会适得其反。 - Aran-Fey
@cuperto 请考虑在问题标题中使用“key”而不是“index”,因为字典没有索引,只有键。 - fabianegli
@fabianegli 你好,我已按照你的建议编辑了我的问题。 - Cuperto
1个回答

4
使用 dict 推导式:
{k:v for k,v in a.items() if v>0}

输出:

{'a': 1, 'e': 9}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接