0
list1 = [
{'id': 1, 'country': 'Italy'},
{'id': 2, 'country': 'Spain'},
{'id': 3, 'country': 'Japan'}
]
Я использую этот код, чтобы удалить из list1
каждого словаря, который имеет country != Italy
:Удалить словарь из списка с несколькими условиями
list2 = [element for element in list1 if element['country'] == 'Italy']
Но я включить в list2
словарях, country == 'Italy'
И country == 'Spain'
и удалить все остальное (или даже лучше поп их от list1
, не создавая другого). Как я могу сделать это в одной строке =
'[элемент для элемент в списке1, если элемент ['country'] в ['Italy', 'Spain']] ', который будет работать IIUC. И понимание списка - единственный способ сделать это в одной строке. popping from list нуждается в цикле, а не в текущем списке ... –
Popping обычно требует больше времени с момента перемещения всех элементов в * O (n) * (к сожалению, похоже, нет эффективного метода для предоставления списка индексы, которые должны быть удалены). –
Nitpick: вы имеете в виду 'country == 'Italy'' OR' country ==' Spain'' – BallpointBen