我有一个变量“price”,“title”和“city”的对象。我想按价格订购它们:
itemlist.sort(key = lambda x: x._price)
for i in itemlist:
print(i._price, i._title, i._city)
假设我有价格["$1", "$3", "$22", "$12"]
。当我希望它["$1", "$12", "$22", "$3"]
时,它会对["$1", "$3", "$12", "$22"]
进行排序。
我知道这是因为价格被认为是一个字符串而不是一个int,但我不知道的是如何将它转换为int以进行排序。
答案 0 :(得分:3)
您可以删除int
,将列表元素转换为'$'
。一种方法是使用str.strip()
:
itemlist.sort(key = lambda x: int(x._price.strip('$'))
或者,如果您打开使用正则表达式,则可以过滤掉非数字:
import re
itemlist.sort(key = lambda x: int(re.sub("[^0-9]", "", x._price)))
[^0-9]
表示匹配任何不是数字的内容。
答案 1 :(得分:1)
天真的解决方案,假设所有价格字符串均以$
开头:
itemlist.sort(key=lambda x: float(x._price[1:]))
但是,首先让$
超出价格可能更好一点,只有在打印价格时才添加它。将价格存储为float
或int
。这也将允许您使用您不能轻易使用字符串的价格进行正常的数学计算。