如何筛选dict以仅选择大于值的键?

时间:2010-11-15 04:21:22

标签: python

我有一个具有以下结构的词典:

{5:"djdj", 6:"8899", 7:"998kdj"}

键是int类型的,它没有排序。

现在我想要其键为> = 6的所有元素。

有没有简单的方法呢?

8 个答案:

答案 0 :(得分:20)

[v for k,v in mydict.items() if k >= 6]

答案 1 :(得分:10)

“元素”是什么意思?

如果你想要键值≥6的dict键值对,Python 2.7+和3.x支持 dict comprehensions

{ k: v for k, v in mydict.items() if k >= 6 }

您可以在早期版本的Python中获得此功能

dict( (k, v) for k, v in mydict.items() if k >= 6 )  # Python 2.4+
dict([(k, v) for k, v in mydict.items() if k >= 6])  # Python 2.0+

使用表达式生成器或列表推导。

如果您只想要一个按键列表,

[ k for k in mydict.keys() if k >= 6 ]
filter( lambda k: k >= 6, mydict.keys() )

同样,如果您只想要一个值列表,

[ v for k, v in mydict.items() if k >= 6 ]
[ mydict[k] for k in mydict.keys() if k >= 6 ]
map( mydict.get, filter( lambda k: k >= 6, mydict.keys() ) )

答案 2 :(得分:7)

也可以filter完成。

In [9]: data = {5:"djdj", 6:"8899", 7:"998kdj"}

In [10]: dict(filter(lambda x: x[0] > 5, data.items()))
Out[10]: {6: '8899', 7: '998kdj'}

答案 3 :(得分:2)

[ mydict[k] for k in filter(lambda x : x > 6, mydict) ]

答案 4 :(得分:1)

如果您知道最大的钥匙且没有丢失钥匙,您也可以直接通过dictonary:[mydict[x] for x in range(6, largest_key+1)]。那将是最有效的方式。

答案 5 :(得分:1)

立即获取字典:(在python 2和3中都有效)

dict( (k,v) for k,v in mydict.items() if k >= 6 )

答案 6 :(得分:0)

您可以使用列表理解

mydict = {5:"djdj", 6:"8899", 7:"998kdj"}
print [k for k in mydict if k >= 6]  # prints "[6, 7]"
print dict([(k, mydict[k]) for k in mydict if k >= 6])  # prints "{6:"8899", 7:"998kdj"}"

答案 7 :(得分:0)

列表理解似乎是你所寻求的,但有一个元素列表而不是键:

a = {5:"djdj", 6:"8899", 7:"998kdj"}
[a[elem] for elem in a if elem >= 6]  #should give you "['8866', '998kd']"