用给定的Dict形式对python中的字典进行排序

2024-04-19 10:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把我的字典从

 results = {"r3":ab,"r1":ac,"r9":ab,"r12":ad,"r19":ae,"r11":ar,"r2":af,"r21":aa,
            "r31":a,"r99":ad,"r111":af,"r116":af,"r211":ar,"r221":aq,}

{"r1":ac,"r2":af,"r3":ab,"r9":ab,"r11":ar,"r12":ad,"r19":ae,"r21":aa,
     "r31":a,"r99":ad, "r111":af,"r116":af,"r211":ar,"r221":aq,}

我试过了

json_data = json.dumps(results, sort_keys = True)

(sorted(results.items(),reverse=False)) but not getting desired output

直接帮我整理好


Tags: abresultsadacarafr2r3
3条回答
    from collections import OrderedDict
    print(OrderedDict(sorted(dict.items(), key= lambda k: int(k[0][1:])))) 

或更多详细信息:

    dict = {"r3":'ab',"r1":'ac',"r9":'ab',"r12":'ad',"r19":'ae',"r11":'ar',"r2":'af',"r21":'aa',"r31":'a',"r99":'ad',"r111":'af',"r116":'af',"r211":'ar',"r221":'aq'}
    sort_keys = sorted(dict, key=lambda k: (k[0], int(k[1:])))
    res_dic = OrderedDict()
    for k in sort_keys:
        if k is not res_dic:
            res_dic[k] = dict[k]
    print(res_dic)

OrderDictionary用于维护我们正在创建的顺序的键的状态。你知道吗

元组列表比OrderedDict更有效:

results = {"r3":'ab',"r1":'ac',"r9":'ab',"r12":'ad',"r19":'ae',"r11":'ar',"r2":'af'}
results = sorted(results.items(), key=lambda x: int(x[0].translate(None, 'r')))
#[('r1', 'ac'), ('r2', 'af'), ('r3', 'ab'), ('r9', 'ab'), ('r11', 'ar'), ('r12', 'ad'), ('r19', 'ae')]

你在找这样的东西吗:

keysLessR = [int(item[1:]) for item in results.keys()]
keysLessR

[12, 11, 19, 31, 21, 211, 1, 2, 3, 9, 221, 99, 111, 116]
keysLessR.sort()

[1, 2, 3, 9, 11, 12, 19, 21, 31, 99, 111, 116, 211, 221]
orderedKeys = ['r'+str(item) for item in keysLessR]

orderedKeys
['r1', 'r2', 'r3', 'r9', 'r11', 'r12', 'r19', 'r21', 'r31', 'r99', 'r111', 'r116', 'r211', 'r221']

for item in orderedKeys:
  print item + ":" + results[item]    # for example

相关问题 更多 >