python return 已排序的字典键列表

python return list of sorted dictionary keys

我确定有人询问并回答了这个问题,但我找不到。我有这本字典:

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

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

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

我有这个代码:

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)]

我确定我在做一些愚蠢的事情,我只是不知道那是什么。

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

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() 给你 (key, value) 的元组; d.keys() 只给你钥匙。