【问题标题】:Sort a dictionary in python based on keys in ascending order根据键升序对python中的字典进行排序
【发布时间】:2019-08-23 09:18:28
【问题描述】:

我有一本字典:

我正在使用内置函数对字典 dict(sorted(d.items())) 进行排序

我希望我的输出是这样的:

{'0':'0','1':'0','2':'0','3':'1245','4':.......}

但现在键的顺序是 0,1,10,100

我想要1,2,3,4 ...

d={'113': '5', '114': '305', '115': '50', '116': '0', '117': '0', '118': '0', '119': '0', '12': '1245', '120': '0', '121': '0', '122': '10', '123': '10', '124': '0', '125': '0', '126': '0', '127': '0', '128': '0', '129': '610,'0': '0', '1': '0', '10': '0', '100': '0', '101': '0', '102': '0', '103': '0', '108': '0', '109': '194', '11': '0', '110': '340', '111': '0', '112': '10', '', '13': '0', '130': '20','104': '120', '105': '105', '106': '0', '107': '0'}

print(dict(sorted(d.items())))

输出如下所示

{'0': '0', '1': '0', '10': '0', '100': '0', '101': '0', '102': '0', '103': '0', '104': '120', '105': '105', '106': '0', '107': '0', '108': '0', '109': '194', '11': '0', '110': '340', '111': '0', '112': '10', '113': '5', '114': '305', '115': '50', '116': '0', '117': '0', '118': '0', '119': '0', '12': '1245', '120': '0', '121': '0', '122': '10', '123': '10', '124': '0', '125': '0', '126': '0', '127': '0', '128': '0', '129': '610', '13': '0', '130': '20'}

请帮助我以正确的方式对它进行排序。

【问题讨论】:

  • keys ,键的顺序应该是:0,1,2,3,4 ..
  • 你的字典有键和值作为字符串。您确定您发送了正确的字典吗?你的字典值是整数还是字符串?
  • 是的,应该是字符串

标签: sorting dictionary


【解决方案1】:

如果您希望对项目进行排序,则以后不能将其保存在字典中。字典不保留顺序。

这将为您提供排序列表的输出:

sorted(d.items(), key=lambda x: int(x[0]))

【讨论】:

    【解决方案2】:

    由于您希望为排序字典建立从零开始的索引,因此以下解决方案应该适用于您的用例。

    a = dict(sorted(d.items()))
    res = {}
    ctr=0
    for i in a.keys():
      res[ctr] = a[i]
      ctr+=1
    
    print(res)
    

    【讨论】:

      【解决方案3】:

      你可以使用 OrderedDict

      from collections import OrderedDict
      d = OrderedDict(d)
      

      【讨论】:

        猜你喜欢
        • 2011-12-11
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        • 2018-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多