python基于键的字典排序

时间:2015-09-28 12:39:01

标签: python sorting dictionary

我有一个如下列表:

list1 = [['abc',{2:1,10:8,7:4,3:4,5:6}],['xyz',{3:8,5:7,2:4,1:9}],.......]]

我想以下面提到的格式在o / p文件中编写列表,其中所有字典项都根据键值按递增顺序排序。

'abc' 2:1 3:4 5:6 7:4 10:8

'xyz' 1:9 2:4 3:8 5:7

我编写的代码如下:

for k, v in list1:
    outputfile.write(k + ' ' + ' '.join('{}:{}'.format(key, val) for key, val in v.items()) + '\n')

但我无法得到理想的结果。请帮我解决一下。

2 个答案:

答案 0 :(得分:1)

您正在寻找sorted()

for k, v in list1:
    print k + ' ' + ' '.join(
        '{}:{}'.format(key, val)
        for key, val in sorted(v.items(), key=lambda x: x[0])
    ) + '\n'

或使用itemgetter()代替lambda:

from operator import itemgetter

for k, v in list1:
    print k + ' ' + ' '.join(
        '{}:{}'.format(key, val)
        for key, val in sorted(v.items(), key=itemgetter(0))
    ) + '\n'

答案 1 :(得分:0)

使用sorted功能对键进行排序

<强>演示

list1 = [['abc',{2:1,10:8,7:4,3:4,5:6}],['xyz',{3:8,5:7,2:4,1:9}],]

for i in list1:
    tmp = ""
    for j in sorted(i[1].keys()):
        tmp += " %s:%s"%(j, i[1][j])
    print "'%s'   %s\n"%(i[0], tmp)