Словарь представляет собой набор пар ключ-значение в фигурных скобках { }; это своего рода итерируемый объект, содержащий уникальные ключи и связанные с ними значения, которые можно дублировать.
В Python существует несколько методов фильтрации словаря, но здесь вы увидите наиболее часто используемые подходы, такие как цикл, понимание списка и методы filter().
- Фильтрация словаря с использованием цикла for
- Фильтрация словаря с использованием функции filter()
- Фильтрация словаря с использованием словарного понимания
Фильтрация словаря с использованием цикла for
Вы можете использовать цикл for для перебора пар ключ-значение словаря, а затем, применив условие, можно отфильтровать необходимое значение ключа.
Например, предположим, что у вас есть словарь, содержащий данные о ВВП штатов. Вы можете следовать приведенной ниже логике, чтобы отфильтровать государства, ВВП которых превышает 1 триллион долларов.
# Define a dictionary that maps U.S. states to their GDP(in trillions of dollars) state_gdp = { 'California': 3.1, 'Texas': 1.8, 'New York': 1.7, 'Florida': 1.0, 'Illinois': 0.8 } # Create an empty dictionary to store states with GDP greater than 1 trillion high_gdp_states = {} # Iterate over the key-value pairs in the state_gdp dictionary for state, gdp in state_gdp.items(): # Check if the GDP for the current state is greater than 1 trillion if gdp > 1: # If so, add the state and its GDP to the high_gdp_states dictionary high_gdp_states[state] = gdp # Print the high_gdp_states dictionary print(high_gdp_states)
Из результатов видно, что только три штата имеют ВВП, превышающий 1 триллион долларов. Здесь посмотрите на условие if, используемое в цикле for для фильтрации пары ключ-значение.
Фильтрация словаря с использованием функции filter()
Функция filter() также фильтрует словарь, который принимает два аргумента: первый — это функция, применяемая к каждому элементу словаря, а второй — сам словарь.
Например, предположим, что у вас есть словарь, содержащий продукты и их цены. Вам необходимо отфильтровать товары по цене меньше или равной 50 долларам. Для этого посмотрите код ниже.
# Define a dictionary of products and their prices products = { "Laptop": 999, "Mouse": 25, "Keyboard": 45, "Monitor": 150, "USB Cable": 10 } # Define a filter function def is_affordable(item): # Return True if the price of the item(item[1]) is less than or equal to 50 return item[1] <= 50 # Use filter() and dict() to filter the products # filter() applies the is_affordable function to each item(key-value pair) in products.items() # dict() converts the filtered iterator of items into a new dictionary affordable_products = dict(filter(is_affordable, products.items())) # Print the dictionary of affordable products print(affordable_products)
Как видно из результатов, три продукта имеют цену менее 50 долларов. Здесь вы можете видеть, что методы filter() и dict() используются вместе. Кроме того, для фильтрации продуктов к каждой паре ключ-значение элементов применяется функция «is_affordable()».
Фильтрация словаря с использованием словарного понимания
Понимание словаря похоже на понимание списка, но оно создает словарь из существующего. Вы также можете использовать его для фильтрации словаря.
Например, предположим, что у вас есть словарь, содержащий штаты и их население, и вам нужно найти штаты с населением более 20 миллионов человек. Для этого вы можете использовать логику кода ниже.
# Define a dictionary that maps U.S. states to their population(in millions) state_population = { 'California': 39.5, 'Texas': 28.7, 'New York': 19.5, 'Florida': 21.5, 'Illinois': 12.7 } # Create a new dictionary 'high_population_states' using a dictionary #comprehension # The dictionary comprehension iterates over the key-value pairs in state_population # and creates a new key-value pair(state: population) for each pair where the #population is greater than 20 high_population_states = {state: population for state, population in state_population.items() if population > 20} # Print the high_population_states dictionary print(high_population_states)
Из результатов вы можете увидеть три штата с населением более 20 миллионов человек. Эти состояния фильтруются с использованием словарного понимания.