Сравнение предметов из двух списков, чтобы вычеркнуть желаемую часть - PullRequest
0 голосов
/ 10 июля 2019

Есть два списка - один содержит list of states, а другой содержит list of addresses. Я пытаюсь сравнить each of the state с each of the address, чтобы найти совпадение. Когда совпадение найдено, скрипт должен вычеркнуть эту часть из адресов.

Вот что я сделал (работает один):

state_list = ['AL', 'AK', 'AZ', 'AR', 'CO', 'CT', 'IL', 'MI']
addresses = ['Downers Grove IL 60515','Duarte CA 91010','Ann Arbor MI 48108']

for item in state_list:
    for address in addresses: 
        if item in address: 
            state = address
            print(state.split(" ")[-2])

Выход:

IL
MI

Могу ли я сделать то же самое, используя подход с одним вкладышем, а не этот неуклюжий вид петли?

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Вы также можете использовать regex для этого.

import re

pattern = re.compile('|'.join(state_list))

[pattern.search(address).group(0) for address in addresses if pattern.search(address)]

['IL', 'MI']

или использовать функции более высокого порядка

[m.group(0) for m in filter(None, map(pattern.search, addresses))]

['IL', 'MI']
1 голос
/ 10 июля 2019
print([state for state in state_list
       if any(state in addr for addr in addresses)])

Выход:

['IL', 'MI']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...