我有一个像这样的python字典设置
mydict = { 'a1': ['g',6],
'a2': ['e',2],
'a3': ['h',3],
'a4': ['s',2],
'a5': ['j',9],
'a6': ['y',7] }
Run Code Online (Sandbox Code Playgroud)
我需要编写一个函数,在列表中返回有序键,具体取决于你的排序列,例如,如果我们在mydict上排序[key] [1](升序)
我应该像这样收到一份清单
['a2', 'a4', 'a3', 'a1', 'a6', 'a5']
Run Code Online (Sandbox Code Playgroud)
它主要起作用,除了你有多个键的相同值的列,例如.'a2':['e',2]和'a4':['s',2].在这个例子中,它返回列表,如此
['a4', 'a4', 'a3', 'a1', 'a6', 'a5']
Run Code Online (Sandbox Code Playgroud)
这是我定义的功能
def itlist(table_dict,column_nb,order="A"):
try:
keys = table_dict.keys()
values = [i[column_nb-1] for i in table_dict.values()]
combo = zip(values,keys)
valkeys = dict(combo)
sortedCols = sorted(values) if order=="A" else sorted(values,reverse=True)
sortedKeys = [valkeys[i] for i in sortedCols]
except (KeyError, IndexError), e:
pass
return sortedKeys
Run Code Online (Sandbox Code Playgroud)
如果我想对数字列进行排序,例如它就像这样被调用
sortedkeysasc = itmethods.itlist(table,2)
Run Code Online (Sandbox Code Playgroud)
那有什么建议吗?
保罗