11 полезных очков знаний "Словарь Python" для взлета

Python
11 полезных очков знаний "Словарь Python" для взлета

Всем привет, меня зовут Цзеджи

Что касается словаря Python, это очень важный тип данных в Python. После того, как вы изучите основы, концепция словаря будет сопровождать вашу последующую учебу и работу. Поэтому здесь есть несколько очень важных моментов познания, которые нужно знать каждому.

Является ли словарь неупорядоченным

Что касается этой концепции, многие друзья не обязательно ясны. В Python 2.7 словари представляют собой неупорядоченные структуры. Нарушен порядок элементов словаря. Это означает, что последовательность элементов детерминирована и повторяема.

>>> # Python 2.7
>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}

В Python 3.5 словари по-прежнему неупорядочены, но на этот раз со случайными структурами данных. Это означает, что каждый раз, когда вы повторно запускаете словарь, вы получаете другой порядок элементов.

>>> # Python 3.5
>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}
>>> a_dict
{'color': 'blue', 'pet': 'dog', 'fruit': 'apple'}

В Python 3.6 и более поздних версиях словари представляют собой упорядоченные структуры данных, что означает, что они сохраняют элементы в том же порядке, в котором они были введены.

>>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}

обмен ключ-значение

Допустим, у вас есть словарь и вам по какой-то причине нужно преобразовать ключи в значения и значения в ключи, что делать?

>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {}
>>> for key, value in a_dict.items():
...     new_dict[value] = key
...
>>> new_dict
{1: 'one', 2: 'two', 3: 'thee', 4: 'four'}

Фильтровать словарь по определенному условию Иногда вам нужно отфильтровать словарь по какому-либо условию. Тогда с условным оператором if это хороший выбор.

>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {}  # Create a new empty dictionary
>>> for key, value in a_dict.items():
...     if value <= 2:
...         new_dict[key] = value
...
>>> new_dict
{'one': 1, 'two': 2}

Сделайте некоторые расчеты, используя значения в словаре При переборе словаря в Python. Также часто необходимо выполнить некоторые расчеты. Предположим, вы сохранили данные о продажах компании в словаре и теперь хотите узнать общую выручку за год.

>>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> total_income = 0.00
>>> for value in incomes.values():
...     total_income += value  # Accumulate the values in total_income
...
>>> total_income
14100.0

понимание словаря

Понимание словаря — это точка знаний с мощными функциями, такими как понимание списка. Поэтому каждый должен его освоить. Например, предположим, что у вас есть два списка данных, и вам нужно создать из них новый словарь.

>>> objects = ['blue', 'apple', 'dog']
>>> categories = ['color', 'fruit', 'pet']
>>> a_dict = {key: value for key, value in zip(categories, objects)}
>>> a_dict
{'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}

Используйте понимание словаря для реализации преобразования ключ-значение

Вы обнаружите, что использование словарного понимания — гораздо более простая и эффективная операция.

>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {value: key for key, value in a_dict.items()}
>>> new_dict
{1: 'one', 2: 'two', 3: 'thee', 4: 'four'}

Используйте словарные понимания для фильтрации словарей

>>> a_dict = {'one': 1, 'two': 2, 'thee': 3, 'four': 4}
>>> new_dict = {k: v for k, v in a_dict.items() if v <= 2}
>>> new_dict
{'one': 1, 'two': 2}

Выполните некоторые расчеты, используя словарное понимание

>>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> total_income = sum([value for value in incomes.values()])
>>> total_income
14100.0

лексикографическая сортировка

Начиная с Python 3.6 словари представляют собой упорядоченные структуры данных, поэтому, если вы используете Python 3.6 (и более поздние версии), вы сможете сортировать любые ключи словаря с помощью sorted() и с помощью понимания словаря.

>> incomes = {'apple': 5600.00, 'orange': 3500.00, 'banana': 5000.00}
>>> sorted_income = {k: incomes[k] for k in sorted(incomes)}
>>> sorted_income
{'apple': 5600.0, 'banana': 5000.0, 'orange': 3500.0}

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

Python предоставляет несколько встроенных функций, которые могут быть полезны при работе с коллекциями, такими как словари.

функция карты()

Предположим, у вас есть словарь с кучей цен на товары и вам нужно применить к ним скидки.

>>> prices = {'apple': 0.40, 'orange': 0.35, 'banana': 0.25}
>>> def discount(current_price):
...     return (current_price[0], round(current_price[1] * 0.95, 2))
...
>>> new_prices = dict(map(discount, prices.items()))
>>> new_prices
{'apple': 0.38, 'orange': 0.33, 'banana': 0.24}

функция фильтра()

Предположим, вы хотите узнать товары с ценой за единицу ниже 0,40.

>>> prices = {'apple': 0.40, 'orange': 0.35, 'banana': 0.25}
>>> def has_low_price(price):
...     return prices[price] < 0.4
...
>>> low_price = list(filter(has_low_price, prices.keys()))
>>> low_price
['orange', 'banana']

Оператор распаковки словаря

Это концепция, которую многие люди не понимают, а Python 3.5 предлагает новую интересную функцию, поэтому вам нужно сосредоточиться на обучении. Вы можете использовать оператор распаковки словаря (**), чтобы объединить два словаря в новый словарь.

>>> vegetable_prices = {'pepper': 0.20, 'onion': 0.55}
>>> fruit_prices = {'apple': 0.40, 'orange': 0.35, 'pepper': .25}
>>> {**vegetable_prices, **fruit_prices}
{'pepper': 0.25, 'onion': 0.55, 'apple': 0.4, 'orange': 0.35}

Если словари, которые вы пытаетесь объединить, имеют повторяющиеся или общие ключи, значение самого правого словаря будет дополнено.

Если вы считаете, что эта статья полезна для вас,Помните, чтобы не забыть 3 даже, ваше подтверждение будет сильнейшей мотивацией для меня продолжать выпускать больше качественных статей!