Словарь представляет собой набор пар ключ-значение в фигурных скобках { }; это своего рода итерируемый объект, содержащий уникальные ключи и связанные с ними значения, которые можно дублировать.

В Python существует несколько методов фильтрации словаря, но здесь вы увидите наиболее часто используемые подходы, такие как цикл, понимание списка и методы 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)

Фильтрация словаря с использованием цикла for

Из результатов видно, что только три штата имеют ВВП, превышающий 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)

Фильтрация словаря с использованием функции filter()

Как видно из результатов, три продукта имеют цену менее 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 миллионов человек. Эти состояния фильтруются с использованием словарного понимания.

Добавить комментарий