Почему в этой операции python вы не должны ставить понимание на первое место? - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть два списка. Я конвертирую оба списка в наборы и создаю словарь наборов следующим образом:

friends=["John","bob","Kimbo", "Jacob","Jane"]
time_since_seen=[3,6,1,4,7]

long_timers={
    friends[i]: time_since_seen[i]
    for i in range(len(friends))
    }

Это может быть глупый вопрос, но почему не работает на первом месте понимание набора python (порядок переключения для меня ... и друзей [я] ...

long_timers={
    for i in range(len(friends))
   friends[i]: time_since_seen[i]
 }

Этот код не работает. Я прошу прощения, если это действительно глупый вопрос, но я инженер-механик, и я начал учиться python 5 дней go.

Ответы [ 3 ]

0 голосов
/ 25 апреля 2020

Добро пожаловать в python мир, дорогой jlifter1

, вы должны выяснить, как работают диктовки.

Синтаксис понимания диктата:

{ expression for item in list if conditional }

То эквивалентно:

for item in list:
    if conditional:
        expression

Это правило синтаксиса, и вы не можете его изменить:)

ОБНОВЛЕНИЕ: как вы упомянули в своем комментарии, вы хотите сделать это для l oop. вы попытались:

long_timers = {для i в диапазоне (len (друзья)): friends [i]: time_since_seen [i]}

но это не правильно. Вы должны написать это так:

long_timers = {}
for i in range(len(friends)):
    long_timers[friends[i]]= time_since_seen[i]

0 голосов
/ 25 апреля 2020

zip () ваш друг здесь:

my_dict = dict(zip(friends, time_since_seen))
# {'John': 3, 'bob': 6, 'Kimbo': 1, 'Jacob': 4, 'Jane': 7}

Демо


Примечание: Примеры использования Dict Понимание в Python

0 голосов
/ 25 апреля 2020

потому что код идет по порядку, он читает первую строку и выполняет его первым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...