假设我有一个名为L的列表和两个名为arr1
和arr2
的属性词典,其键是列表L
的元素。现在我想以下列方式对L
进行排序。
L
应根据arr1
中的属性值按升序排序。i
的两个元素j
和L
具有相同的属性arr1
,则i,e,如果arr1[i]
和arr[j]
相等,然后我们应该在arr2
。举个例子,假设
L=[0,1,2,3,4,5,6]
arr1={0:30,1:15,2:15,3:20,4:23,5:20,6:35}
arr2={0:6,1:8,2:6,3:17,4:65,5:65,6:34}
排序L
应为[2,1,3,5,4,0,6]
,排序介于1和2之间由arr2
决定,排序介于3和5之间。排序的其余部分由{{1 }}
答案 0 :(得分:1)
只需使用包含arr1
和arr2
值的元组作为排序键:
L.sort(key=lambda x: (arr1[x], arr2[x]))
# [2, 1, 3, 5, 4, 0, 6]
这与5和3的排序中的预期结果不同,如果基于arr2的排序顺序降序,这将是一致的:
L.sort(key=lambda x: (arr1[x], -arr2[x]))
# [1, 2, 5, 3, 4, 0, 6]
但是现在1,2的排序不同,你的例子似乎没有以一致的方式排序。