我有一个结构如下的字典:
{5:"djdj", 6:"8899", 7:"998kdj"}
Run Code Online (Sandbox Code Playgroud)
键是int类型的,它没有排序.
现在我想要键> = 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)
它也可以完成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)