Есть ли какая-либо польза от использования словарного понимания, если возможен эквивалентный dict(zip(a, b))?

Недавно я работал со словарями, и мне сказали составить словари из двух таких списков:

zipped = {key: value for key, value in zip(drinks, caffeine)}

Позже я забыл, как это сделать, и нашел другой способ, который мне показался более простым:

zipped = dict(zip(drinks, caffeine))

Есть ли что-то хуже в использовании второго примера вместо первого?

Вторая версия действительно является более элегантным способом сделать то же самое. Действуй.

trincot 28.06.2024 19:58

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

John Carter 28.06.2024 20:00

Для прототипирования лучше использовать первый вариант, поскольку его можно легко изменить. Второй AFAIK более питонический.

Jérôme Richard 28.06.2024 20:02

Не связано напрямую, но я хотел отметить, что если drinks и caffeine не имеют одинакового количества элементов, ни один из двух методов не выдаст никакого предупреждения или ошибки. Возможно, стоит сделать zip(drinks, caffeine, strict=True)

d.b 28.06.2024 20:04

Первый способ более гибкий: подумайте, нужно ли вам добавить условие или преобразовать ключ/значение с помощью вызова какой-либо функции. Он также позволяет избежать поиска имени dict.

wim 28.06.2024 20:23

Первый вариант немного понятнее, второй, по моему опыту, немного быстрее (в основном я бы использовал второй).

Timus 28.06.2024 20:39

Нет, dict(whatever) всегда следует отдавать предпочтение перед {k:v for k,v in whatever}, так же, как list(whatever) следует отдавать предпочтение перед [x for x in whatever].

juanpa.arrivillaga 28.06.2024 20:54

@Тимус, второй определенно чище

juanpa.arrivillaga 28.06.2024 20:54

@JohnCarter, второе так же легко понять

juanpa.arrivillaga 28.06.2024 20:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
9
115
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Словарь/список — отличные гибкие инструменты. Вас учили этому, чтобы решение было более гибким и соответствовало текущим практикам кодирования. Как говорится, это «проблема навыков». В этом нет ничего плохого. Всегда читайте рекомендации компании по кодированию, где это возможно.

Технически, ОП использует словарное понимание.

snakecharmerb 28.06.2024 22:04

Другие вопросы по теме