【问题标题】:Python: iterate over dictionary keys by sorted valuePython:按排序值迭代字典键
【发布时间】:2015-01-04 17:48:19
【问题描述】:

我需要遍历字典的键,但要按照值指定的顺序进行。

例子:

myDict = {ID1: 50, ID2: 40, ID3: 60}

我想以某种方式做到这一点:

for keyCorrespondingToTheValue in sorted(myDict.values()):

--> 我怎样才能做到这一点?

如果值是排名,我想按排名依次遍历每个ID。我可以通过反转字典中的键/值来做到这一点,但我不想这样做,因为不能保证排名值是唯一的。

【问题讨论】:

    标签: python dictionary iteration


    【解决方案1】:
    for key in sorted(myDict, key=myDict.get)
    

    【讨论】:

      【解决方案2】:

      您可以像这样对myDict.items 进行排序:

      >>> myDict = {'ID1': 50, 'ID2': 40, 'ID3': 60}
      >>> for item in sorted(myDict.items(), key=lambda x: x[1]):
      ...     item
      ...
      ('ID2', 40)
      ('ID1', 50)
      ('ID3', 60)
      >>> for key, _ in sorted(myDict.items(), key=lambda x: x[1]):
      ...     key
      ...
      'ID2'
      'ID1'
      'ID3'
      >>>
      

      这里的重要部分是sortedkey function,它允许您指定您希望如何对每个项目进行排序。在这种情况下,我们对每个键的值进行排序。

      您可能还想阅读文档中的Sorting HOW TO,以更好地了解如何使用sortedkey

      【讨论】:

      • 谢谢!如何从最大 -> 最小排序?
      • @JessicaDow - 您可以简单地将reverse 参数设置为True: for item in sorted(myDict.items(), key=lambda x: x[1], reverse=True):
      • 在 python 文档中对“Sorting HOW TO”的引用可能很好:docs.python.org/3/howto/sorting.html
      • @BHM - 为您添加。
      【解决方案3】:
      for key in sorted(myDict, key=lambda k: myDict[k]):
          ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        • 2017-05-30
        • 1970-01-01
        • 2021-04-05
        相关资源
        最近更新 更多