python - 根据值对字典键进行排序

标签 python sorting

我有一个这样的 python 字典设置

mydict = { 'a1': ['g',6],
           'a2': ['e',2],
           'a3': ['h',3],
           'a4': ['s',2],
           'a5': ['j',9],
           'a6': ['y',7] }

我需要编写一个函数来返回列表中的有序键,具体取决于您在哪一列进行排序,例如,如果我们按 mydict[key][1](升序)进行排序

我应该收到这样的 list

['a2', 'a4', 'a3', 'a1', 'a6', 'a5']

它主要工作,除了当你有多个键的相同值的列时,例如。 'a2': ['e',2] 和'a4': ['s',2]。在这种情况下,它会像这样返回列表

['a4', 'a4', 'a3', 'a1', 'a6', 'a5']

这是我定义的函数

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

如果我想对数字列进行排序,例如,它是这样调用的

sortedkeysasc = itmethods.itlist(table,2)

有什么建议吗?

保罗

最佳答案

用起来会不会方便很多

sorted(d, key=lambda k: d[k][1])

(其中 d 是字典)?

关于python - 根据值对字典键进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4690094/

相关文章:

python : Extract values from List of tuples

python - 数据源排序后如何更新QAbstractTableModel和QTableView?

java - 按数值对 ArrayList<String> 进行排序

python - 排序 XML 文件

python - KeyError : '' val_loss"when training model

python - Windows 机器上的 libusb、pyusb 和 python-escpos

Python递归将元组列表排序为树结构

javascript - 如何使用 map 函数和给定索引设置数组元素的特定位置?

加载 fileConfig 时的 Python 日志记录 "KeyError"

python - 发出 HTTP POST 请求