Задать вопрос
hottabxp
@hottabxp
Сначала мы жили бедно, а потом нас обокрали..

Как работает данный код?

Нашел только что в Twitter такой код:
words = [(0,'What'),(1,'the'),(2,'heck?')]

for {}[()],word in words:
    print(word)
Вывод:
What
the
heck?

Не могу понять конкретно эту строку (то-есть, понятно, что здесь идет распаковка. Но не пойму конкретно это - {}[()] ):
for {}[()],word in words:
  • Вопрос задан
  • 362 просмотра
Подписаться 2 Простой 1 комментарий
Решения вопроса 2
@antares4045
ну вообще, писавший этот код, вероятно не очень здоров
для начала предлагаю разобраться с деструктуризацией

если вы напишите
a,b = 2,3
то в переменной a окажется значение 2
а в переменной b -- значение 3

это же можно использовать в циклах:
words = [(0,'What'),(1,'the'),(2,'heck?')]
for key,word in words:
    print('key:', key)
    print('word:', word)
    print()

вывод:
key: 0
word: What

key: 1
word: the

key: 2
word: heck?


если же при разборе кортежа, какой-то элемент вам не нужет, то можно просто использовать нижнее подчёркивание

words = [(0,'What'),(1,'the'),(2,'heck?')]

for _,word in words:
    print(word)


Но автор вашего примера решил сделать нечто странное:
{} -- создание пустого dict
[()] -- присвоение в него по ключу "пустой кортеж" значения

учитывая, что исходный dict никуда не сохраняется, это можно считать отчисткой, только вот зачем?
a = {}
a[()] = 5
print(a)


{(): 5}
Ответ написан
Комментировать
легко и просто, в питоне есть как распаковка кортежей, что собственно и происходит
получается примерно так:
{}[()] = 0
word = 'what

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

но так писать не стоит
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
longclaps
@longclaps
d = {}
for d[()], word in [(0, 'What'), (1, 'the'), (2, 'heck?')]:
    print(d, word)

Так понятно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы