目前,我有一个清单,有人可以购买如下项目:
my_list = [
('Candy', 1.0, 20.5),
('Soda', 3.0, 10.25),
('Coffee', 1.2, 20.335),
('Soap', 1.2, 11.5),
('Spoon', 0.2, 2.32),
('Toast', 3.2, 12.335),
('Toothpaste', 3, 20.5),
('Creamer', .1, 5.5),
('Sugar', 2.2, 5.2),
]
每个项目的设置如下:
^{pr2}$我有一个列表,其中列出了前5个ItemValue
。在
print nlargest(5, my_list, key=itemgetter(2))
>>> [
('Candy', 1.0, 20.5),
('Toothpaste', 3, 20.5),
('Coffee', 1.2, 20.335),
('Toast', 3.2, 12.335),
('Soap', 1.2, 11.5),
]
我试图检索一个结果,其中我得到前5个总数ItemValue
,其中前5个总数ItemCost
等于或小于6。在
有什么建议吗?在
您可以先进行筛选,然后在筛选列表中使用以下所有
nlargest
。在但是对于这样的数据操作,
^{pr2}$pandas
可能非常有用。举个例子如果你愿意,你可以先得到
ItemCost
的nsmallest
,然后得到nlargest
不知道这是不是你要的
我首先从我的列表中创建5个元素的所有可能的组合
然后我会在结果中找到所有可能的组合,其中总项目成本将小于或等于6。在
^{pr2}$现在,我将找到total itemValue最大的元素
itemValue最大的元素的索引为
现在,你可以在f中找到这个元素
我得到的答案是
首先要按
ItemCost
筛选列表:可以通过:
filtered_generator = filter(lambda x: x[1] <= 6, my_list)
或者以更像python的方式
filtered_list = [x for x in my_list if x[1] <=6]
为了使它成为一个生成器来节省内存,只需使用括号而不是方括号。
然后要得到n个最大的项目:
nlargest(5, filtered_iter, key=lambda x:x[2])
filtered_iter
可以是列表或生成器之一。在相关问题 更多 >
编程相关推荐