Python:由两列在dict中按制表符分隔键

时间:2016-06-21 14:12:11

标签: python dictionary

我有一个带有制表符分隔键的词典。

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

如何实现这一目标?我甚至不确定字典是否是正确的数据结构。

2 个答案:

答案 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)

仅包含输入数据的小修订。