我有两个单独的列表,一个列表包含列表(list1)列表,另一个列表是简单数值。 list2已排序,但我想基于list2的值对list1进行排序。使用Zip方法会给出错误:无法哈希化的类型。
list1=[[1 ,2],[2,1],[1,3],[1,9],[6,9],[3,5],[6,8],[4,5],[7,9]]
list2=[0.0,1.4142135623730951,1.0,7.0,8.602325267042627, 3.605551275463989,7.810249675906654,4.242640687119285,9.219544457292887]
keydict=dict(zip(list1,list2))//Gives errror: unhashable type
。任何人都可以建议解决方案。
答案 0 :(得分:3)
您可以使用zip()
+ sorted()
:
[x for x, _ in sorted(zip(list1, list2), key=lambda x: x[1])]
代码:
list1 = [[1 ,2],[2,1],[1,3],[1,9],[6,9],[3,5],[6,8],[4,5],[7,9]]
list2 = [0.0,1.4142135623730951,1.0,7.0,8.602325267042627, 3.605551275463989,7.810249675906654,4.242640687119285,9.219544457292887]
print([x for x, _ in sorted(zip(list1, list2), key=lambda x: x[1])])
# [[1, 2], [1, 3], [2, 1], [3, 5], [4, 5], [1, 9], [6, 8], [6, 9], [7, 9]]
答案 1 :(得分:1)
使用以下列表理解:
print([list1[list2.index(i)] for i in sorted(list2)])
输出:
[[1, 2], [1, 3], [2, 1], [3, 5], [4, 5], [1, 9], [6, 8], [6, 9], [7, 9]]