- 已关闭**。此问题为opinion-based。当前不接受答案。
- 想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。
5小时前关门了。
Improve this question
我有一张购物单:
items = [
['Aspirin', 'Walgreens', 6.00],
['book lamp', 'Amazon', 2.87],
['popsicles', 'Walmart', 5.64],
['hair brush', 'Amazon', 6.58],
['Listerine', 'Walmart', 3.95],
['gift bag', 'Target', 1.50]
]
我想排序的项目从最便宜的到最高的价格,并删除价格。(我不需要他们了,然后,我只是从上往下买,直到我用完了钱)。目标是:
items = [
['gift bag', 'Target'],
['book lamp', 'Amazon'],
['Listerine', 'Walmart'],
['popsicles', 'Walmart'],
['Aspirin', 'Walgreens'],
['hair brush', 'Amazon']
]
一种有效但看起来笨拙的方法(演示/模板):
import operator
items = sorted(items, key=operator.itemgetter(2))
for i in range(len(items)):
items[i] = items[i][:2]
有没有优雅的方式?也许一条线?
8条答案
按热度按时间2ekbmq321#
我不知道我对使用
key
的副作用有什么感觉,但是:结果:
2lpgd9682#
在python中使用列表解析的美妙之处。
wz8daaqr3#
如果使用内置的
sorted
方法会怎样:输出:
x6492ojm4#
下面是另一种方法:
您也可以尝试
operator
x一个一个一个一个x一个一个二个x
yb3bgrhw5#
有人建议我可以使用更多的“for”和更少的内置函数:
qyuhtwio6#
齐普齐普
f8rj6qna7#
不可避免的
numpy
版本。通过推断最后一列的值的重新排序wrt来选择前两列。yv5phkfx8#
我不知道这是优化代码,但希望它会对你有帮助。