如何通过字典的值过滤列表?

时间:2021-03-17 10:16:12

标签: python list dictionary filter

我有一个看起来像这样的列表:

  my_list=
    [
    ['C150', 'Audi', 'P1', 'CC Germany', 'GE' ],
    ['C150', 'Audi', 'P1', 'CC Germany', 'MUN' ]
    ['C150', 'Audi', 'P1', 'CC Spain', 'ES' ]
    ['C150', 'Audi', 'P1', 'CC Spain', 'MAD' ]
    ['C150', 'Audi', 'P1', 'CC France', 'FR' ]
    ]

我还有一个变量和一个字典,看起来像这样:

country_to_cath = 'GE'

my_dict = {'CC Germany': 'Ge', 'CC Spain': 'Es', 'CC France': 'Fr'}

我正在尝试根据 my_list 变量过滤 country_to_catch,该变量表示 GE。如果我查看 GEmy_dict 代表的位置,我会看到 CC Germany(需要将其设置为上)。所以我需要用 CC Germany from my_list

过滤所有记录

这是我的代码:

country_to_catch = 'GE'
for row in my_list:
    if row[3] == my_dict[country_to_catch]:
       print(row)

我想要的输出:

   'C150', 'Audi', 'P1', 'CC Germany', 'GE' 
   'C150', 'Audi', 'P1', 'CC Germany', 'MUN'

我目前的输出:

 KeyError: 'GE'  

1 个答案:

答案 0 :(得分:1)

您需要反转您的字典才能使您的代码正常工作。还要考虑大写。

my_list=[
    ['C150', 'Audi', 'P1', 'CC Germany', 'GE' ],
    ['C150', 'Audi', 'P1', 'CC Germany', 'MUN' ],
    ['C150', 'Audi', 'P1', 'CC Spain', 'ES' ],
    ['C150', 'Audi', 'P1', 'CC Sppain', 'MAD' ],
    ['C150', 'Audi', 'P1', 'CC France', 'FR' ]
    ]

my_dict = {'CC Germany': 'Ge', 'CC Spain': 'Es', 'CC France': 'Fr'}
reversed_dictionary = {value : key for (key, value) in my_dict.items()}
country_to_catch = 'Ge'

for row in my_list:
  
    if row[3] == reversed_dictionary[country_to_catch]:
       print(row)

#['C150', 'Audi', 'P1', 'CC Germany', 'GE']
#['C150', 'Audi', 'P1', 'CC Germany', 'MUN']