我有一个带有制表符分隔键的词典。
d = {}
d["1\t1"] = "abc"
d["10\t1"] = "def"
d["1\t10"] = "ghi"
d["2\t5"] = "xyz"
d["1\t4"] = 0
如何在第一列和第二列之后对这些键进行排序?
我不能用这个
for s in sorted(d):
print s
因为我的钥匙是字符串。
我想要归还:
1 1
1 4
1 10
2 5
10 1
如何实现这一目标?我甚至不确定字典是否是正确的数据结构。
答案 0 :(得分:4)
我假设第二列意味着在\ t
sorted(d.items(),key= lambda x: (int(x[0].split('\t')[0]),int(x[0].split('\t')[-1])))
输出:
[('1\t1', 'abc'), ('1\t4', 0), ('1\t10', 'ghi'), ('2\t5', 'xyz'), ('10\t1', 'def')]
打印出来:
for k,_ in sorted(d.items(),key= lambda x: (int(x[0].split('\t')[0]),int(x[0].split('\t')[-1]))):
... print k.split('\t')[0], k.split('\t')[1]
1 1
1 4
1 10
2 5
10 1
答案 1 :(得分:0)
替代(可能更容易解决)我自己的问题(谢谢凯文):
d = {}
d[1,1] = "abc"
d[10,1] = "def"
d[1,10] = "ghi"
d[2,5] = "xyz"
d[1,4] = 0
for k in sorted(d):
print(k)
仅包含输入数据的小修订。