我想根据一行充满int:
对列值进行排序cart = [[1, 3, 0, 2], ['olives', 'tomatoes', 'avocado', 'patato']]
并拥有此
new_cart= [[0, 1, 2, 3], ['avocado', 'olives', 'patato', 'tomatoes' ]]
换句话说,我希望字符串按它们对应的整数值排序:
我发现了这些问题,但没有找到我想要的问题:
答案 0 :(得分:4)
zip-sort-unzip程序应该可以解决问题:
data = [[1, 3, 0, 2], ['olives', 'tomatoes', 'avocado', 'patato']]
sorted_data = zip(*sorted(zip(data[0], data[1])))
# [(0, 1, 2, 3), ('avocado', 'olives', 'patato', 'tomatoes')]
或者如果您想将它们保留为列表:
sorted_data = map(list, zip(*sorted(zip(data[0], data[1]))))
# [[0, 1, 2, 3], ['avocado', 'olives', 'patato', 'tomatoes']]
在Python 3.x上,zip
和map
都会返回迭代器,所以如果你想“烧掉”#39;他们只是进入了'#cast;#39;它们就是这样,即:
sorted_data = list(map(list, zip(*sorted(zip(data[0], data[1])))))
注意:正如JJoao所建议的那样,您也可以在内部zip
中使用参数展开,而不是从列表中明确选择您想要zip
的字段,例如:
sorted_data = list(map(list, zip(*sorted(zip(*data)))))
答案 1 :(得分:0)
sorted_data=[ sorted(i) for i in data ]
# [[0, 1, 2, 3], ['avocado', 'olives', 'patato', 'tomatoes']]
这样就可以了。简单列表理解。!