Luc*_*ips 9 python dictionary list
我有一个带字符串键和int值的字典.有什么办法我可以拿这个dict并用它来获取从最高到最低值的键列表?
例:
>>> myDict = {'seven': 7, 'four': 4, 'one': 1, 'two': 2, 'five': 5, 'eight': 8}
>>> myList = myDict.sortNumericallyByKeys
>>> myList
['eight', 'seven', 'five', 'four', 'two', 'one']
Run Code Online (Sandbox Code Playgroud)
iru*_*var 16
sorted(myDict, key=myDict.get, reverse=True)
Run Code Online (Sandbox Code Playgroud)
这是一种方法:
>>> myDict = {'seven': 7, 'four': 4, 'one': 1, 'two': 2, 'five': 5, 'eight': 8}
>>> sorted(myDict.iterkeys(), key=lambda k: myDict[k], reverse=True)
['eight', 'seven', 'five', 'four', 'two', 'one']
Run Code Online (Sandbox Code Playgroud)
(灵感来自这个答案)
它使用内置函数sorted
(reverse=True
从高到低),key
参数是设置排序键的函数。在这种情况下,它是一个获取相应 dict 值的 lambda,但它几乎可以是任何东西。例如,您可以使用operator.itemgetter(1)
或myDict.get
如其他答案所示,或任何其他排序功能(按值除外)。
您可以使用items
获取键值对列表并sorted
使用您的条件对它们进行排序:
myList = sorted(myDict.items(), key=lambda x: x[1], reverse=True)
Run Code Online (Sandbox Code Playgroud)
如果您使用 ipython,则可以输入 myDict。tabtab
您将获得所有功能的列表。您还可以键入print myDict.items.__doc__
并获取快速文档。
关键参数是在比较元素之前应用于元素的函数。由于items
返回对的列表并对对的第二个元素进行排序,因此 key 是一个从元组中获取第二个元素的函数。
当然,可以使用以下方法摆脱调用items
:
myList = sorted(myDict, key=myDict.get, reverse=True) #posted in another answer
Run Code Online (Sandbox Code Playgroud)