如何基于Python中的其他多个列表过滤列表?

丹吉尔市

我有3个清单:

minimal_values = ['0,32', '0,35', '0,45']
maximal_values = ['0,78', '0,85', '0,72']

my_list = [
    ['Morocco', 'Meat', '190,00', '0,15'], 
    ['Morocco', 'Meat', '189,90', '0,32'], 
    ['Morocco', 'Meat', '189,38', '0,44'],
    ['Morocco', 'Meat', '188,94', '0,60'],
    ['Morocco', 'Meat', '188,49', '0,78'],
    ['Morocco', 'Meat', '187,99', '0,101'],
    ['Spain', 'Meat', '190,76', '0,10'], 
    ['Spain', 'Meat', '190,16', '0,20'], 
    ['Spain', 'Meat', '189,56', '0,35'],
    ['Spain', 'Meat', '189,01', '0,40'],
    ['Spain', 'Meat', '188,13', '0,75'],
    ['Spain', 'Meat', '187,95', '0,85'],
    ['Italy', 'Meat', '190,20', '0,11'],
    ['Italy', 'Meat', '190,10', '0,31'], 
    ['Italy', 'Meat', '189,32', '0,45'],
    ['Italy', 'Meat', '188,61', '0,67'],
    ['Italy', 'Meat', '188,01', '0,72'],
    ['Italy', 'Meat', '187,36', '0,80']]

我想过滤器my_list基础上index [-1],并在价值观minimal_valuesmaximal_values像这样:

  1. 对于摩洛哥,我只希望index[-1]介于0,32之间的行0,78
  2. 对于西班牙,我只希望index[-1]介于0,35之间的行0,85
  3. 对于意大利,我只想要index[-1]介于0,45之间的行0,72

我最终想要my_list看起来像这样:

my_list = [
    ['Morocco', 'Meat', '189,90', '0,32'], 
    ['Morocco', 'Meat', '189,38', '0,44'],
    ['Morocco', 'Meat', '188,94', '0,60'],
    ['Morocco', 'Meat', '188,49', '0,78'],
    ['Spain', 'Meat', '189,56', '0,35'],
    ['Spain', 'Meat', '189,01', '0,40'],
    ['Spain', 'Meat', '188,13', '0,75'],
    ['Spain', 'Meat', '187,95', '0,85'],
    ['Italy', 'Meat', '189,32', '0,45'],
    ['Italy', 'Meat', '188,61', '0,67'],
    ['Italy', 'Meat', '188,01', '0,72']]

这是我尝试的代码:

for l in my_list:
    if l[-1] >= [x for x in minimal_values] and <= [x for x in maximal_values]:
        print(l)

我收到以下输出:

SyntaxError: invalid syntax
固体

您可以选择这样的东西:

minimal_values = ['0,32', '0,35', '0,45']
maximal_values = ['0,78', '0,85', '0,72']

my_list = [
    ['Morocco', 'Meat', '190,00', '0,15'], 
    ['Morocco', 'Meat', '189,90', '0,32'], 
    ['Morocco', 'Meat', '189,38', '0,44'],
    ['Morocco', 'Meat', '188,94', '0,60'],
    ['Morocco', 'Meat', '188,49', '0,78'],
    ['Morocco', 'Meat', '187,99', '0,101'],
    ['Spain', 'Meat', '190,76', '0,10'], 
    ['Spain', 'Meat', '190,16', '0,20'], 
    ['Spain', 'Meat', '189,56', '0,35'],
    ['Spain', 'Meat', '189,01', '0,40'],
    ['Spain', 'Meat', '188,13', '0,75'],
    ['Spain', 'Meat', '187,95', '0,85'],
    ['Italy', 'Meat', '190,20', '0,11'],
    ['Italy', 'Meat', '190,10', '0,31'], 
    ['Italy', 'Meat', '189,32', '0,45'],
    ['Italy', 'Meat', '188,61', '0,67'],
    ['Italy', 'Meat', '188,01', '0,72'],
    ['Italy', 'Meat', '187,36', '0,80']]
    

# Convert values to float.
minimal_values = [float(i.replace(',', '.')) for i in minimal_values]
maximal_values = [float(i.replace(',', '.')) for i in maximal_values]

# Collect all unique countries in a list.
countries = list(set(country[0] for country in my_list))

results = []
for l in my_list:
    i = countries.index(l[0])
    if minimal_values[i] <= float(l[-1].replace(',', '.')) <= maximal_values[i]:
        results.append(l)
 print(results)

输出:

[['Morocco', 'Meat', '189,90', '0,32'],
['Morocco', 'Meat', '189,38', '0,44'],
['Morocco', 'Meat', '188,94', '0,60'],
['Morocco', 'Meat', '188,49', '0,78'],
['Spain', 'Meat', '189,56', '0,35'],
['Spain', 'Meat', '189,01', '0,40'],
['Spain', 'Meat', '188,13', '0,75'],
['Spain', 'Meat', '187,95', '0,85'],
['Italy', 'Meat', '189,32', '0,45'],
['Italy', 'Meat', '188,61', '0,67'],
['Italy', 'Meat', '188,01', '0,72']]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Ansible - 基于其他列表的过滤器列表

Python,其他列表中的元素对列表

基于其他两个列表在 Python 中创建列表?

从Java 8流中获取N(3)个列表(基于ENUM性别(男,女,其他)),并基于ENUM过滤条件

基于 R 中多个其他列的值进行过滤

如何基于json数组中的特定属性和Angular js中其他下拉列表的ng-model值在ng-repeat中过滤数组

从其他列的值中过滤出列值,并将结果转换为多个列表Pandas

如何基于python中另一个列表中的元素过滤列表

用Java中的其他多个列表对列表进行排序

如何在python列表中删除其他逗号

使用其他列表的内容过滤列表

基于其他列中数据的列表中单词的频率

如何基于多个条件创建过滤的下拉列表

如何使用页面对象基于表中的其他元素获取元素列表?

防止基于列表中其他项的属性更改

通过python在列表中查找其他对

从python列表中删除其他引号

与其他行相比,如何根据列表过滤系列?

如何使用关键字列表(在其他表的列中)过滤Power BI表

过滤具有其他列中的值的列表列

Python:字符串排序列表和基于其他列表的无排序列表?

过滤python列表,同时将未过滤的术语耦合到其他列表。

如何使用其他交替列表中的元素创建列表?

如何检查列表的字符串元素是否在数据框/其他列表中(python)

python根据其他列表从列表中删除元素

如何基于列表进行sed替换(s /// g)?我需要交换多个单词,并与其他相应的单词交换

从python中的类外部访问类中的多个列表(或其他变量)

如何在python中的其他列中基于多个条件设置列的值?

基于其他下拉列表的下拉选择