python返回已排序字典键的列表

时间:2018-01-30 03:52:10

标签: python-3.x list key ordereddictionary

我确定已经问到并回答了,但我找不到。我有这本词典:

{'22775': 15.9, 
 '22778': 29.2, 
 '22776': 20.25, 
 '22773': 9.65, 
 '22777': 22.9, 
 '22774': 12.45}

一个字符串和一个浮点数。

我想在tk列表框中列出关键字符串,以允许用户选择一个,然后在计算中使用相应的浮点数来确定事件中的延迟因子。

我有这段代码:

def dic_entry(line):
    #Create key:value pairs from string
    key, sep, value = line.strip().partition(":")
    return key, float(value)

with open(filename1) as f_obj:    
    s = dict(dic_entry(line) for line in f_obj)
print (s) #for testing only
s_ord = sorted(s.items(),key=lambda x: x[1])
print (s_ord)

第一次打印让我

{'22775': 15.9, 
 '22778': 29.2, 
 '22776': 20.25, 
 '22773': 9.65, 
 '22777': 22.9, 
 '22774': 12.45}

正如所料。第二个,我希望能给我一个有序的密钥列表让我

[('22773', 9.65), 
 ('22774', 12.45), 
 ('22775', 15.9), 
 ('22776', 20.25), 
 ('22777', 22.9), 
 ('22778', 29.2)].

我尝试过使用集合模块中的sorteddictionary,它为我提供了一个排序字典,但是我无法提取密钥列表。

s_ord2 = []
for keys in s.items():  
  s_ord2.append (keys)
print (s_ord2)

给出了一个关键值对列表:

[('22776', 20.25), 
 ('22777', 22.9), 
 ('22774', 12.45), 
 ('22773', 9.65), 
 ('22778', 29.2), 
 ('22775', 15.9)]

我确定我做的事情愚蠢,我只是不知道它是什么。

1 个答案:

答案 0 :(得分:0)

当您要使用items时,您正在使用keys

In [1]: d = {'z': 3, 'b': 4, 'a': 9}

In [2]: sorted(d.keys())
Out[2]: ['a', 'b', 'z']

In [3]: sorted(d.items())
Out[3]: [('a', 9), ('b', 4), ('z', 3)]

d.items()为你提供(键,值)的元组; d.keys()只是给你一把钥匙。