我有一个具有以下结构的词典:
{5:"djdj", 6:"8899", 7:"998kdj"}
键是int类型的,它没有排序。
现在我想要其键为> = 6的所有元素。
有没有简单的方法呢?
答案 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']"