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

Bin*_*hen 9 python

我有一个结构如下的字典:

{5:"djdj", 6:"8899", 7:"998kdj"}
Run Code Online (Sandbox Code Playgroud)

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

现在我想要键> = 6的所有元素.

有没有简单的方法呢?

jon*_*esy 21

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


eph*_*ent 10

"元素"是什么意思?

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

{ k: v for k, v in mydict.items() if k >= 6 }
Run Code Online (Sandbox Code Playgroud)

您可以在早期版本的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+
Run Code Online (Sandbox Code Playgroud)

通过使用表达式生成器或列表推导.

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

[ k for k in mydict.keys() if k >= 6 ]
filter( lambda k: k >= 6, mydict.keys() )
Run Code Online (Sandbox Code Playgroud)

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

[ 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() ) )
Run Code Online (Sandbox Code Playgroud)


kum*_*mar 8

它也可以完成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'}
Run Code Online (Sandbox Code Playgroud)