【发布时间】:2018-06-09 22:32:03
【问题描述】:
我有一个要排序的元组列表。元组包含字符串:
connectionsList = [('C', 'B'), ('A', 'C'), ('D', 'B'), ('C','D')]
元组中的字符串具有存储在字典中的数值:
valuesDict = {'A':3, 'B':5, 'C':1, 'D':2}
我想做的是按元组字典中值的总和对列表进行排序。这个玩具示例的期望输出是:
[(C,D), (A,C), (C,B), (D,B)]
总和为:
[3, 4, 6, 7]
使用 itemgetter,我可以按位置按字母顺序排序:
sortedView = sorted(connectionsList, key=itemgetter(0,1))
但是,我无法在 dict 中查找来自 itemgetter 的值。运行这个:
sortedView = sorted(connectionsList, key=valuesDict[itemgetter(0)] + valuesDict[itemgetter(1)])
给出KeyError: operator.itemgetter(0) 的字典错误。
如何根据dict 中的值创建排序?
【问题讨论】:
-
sorted(connectionsList, key=lambda x: sum([valuesDict[y] for y in x]))? -
不过,您将不得不担心使用不存在的键进行索引。
标签: python sorting dictionary tuples