我有一个如下列表:
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')
但我无法得到理想的结果。请帮我解决一下。
答案 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)