Python dict с тремя значениями в цикле for

#python #for-loop #dictionary

#python #for-цикл #словарь

Вопрос:

Используя python, у меня есть некоторый код, который выглядит следующим образом:

 for (key, value) in files:
    ...
  

Рабочий список для вышеуказанного может быть:

 files = [(
   'key1', 'value1'
), ...]
  

Теперь я нашел этот код:

 for (key, filename, value) in files:
    ...
  

Как бы dict искал меня, чтобы получить key , filename и value ?

Комментарии:

1.Нет, первый цикл не распаковал бы ваши словари. Это не тот код, который будет работать; files ожидается, что это будет список (key, value) последовательностей.

2. @MartijnPieters, отлично. Пропустил это. Я обновил вопрос, хотя, я думаю, вы ясно дали понять…

3. Я думаю, теперь вы знаете, как ответить на это самостоятельно, не так ли? 🙂

4. я уверен … нелегко быть зеленым. спасибо 🙂

Ответ №1:

Вам нужен dict или список, который вы предоставили? Если вы хотите сохранить его в виде списка, вы могли бы просто расширить кортеж, чтобы в нем было три элемента вместо двух, вот так. Я предполагаю, что из вашей формулировки вы хотите знать, как будет выглядеть переменная files, чтобы соответствовать этому циклу. Этого должно быть достаточно:

 files = [
        ('key1', 'file1', 'value1'),
        ('key2', 'file2', 'value2'),
        ('key3', 'file3', 'value3')
        ]

for (key, file, value) in files:
    print key, file, value

>>key1 file1 value1
>>key2 file2 value2
>>key3 file3 value3
  

Если вы хотите, чтобы это был dict, вы, вероятно, захотите отформатировать его следующим образом:

 files = {
        'key1': ('file1', 'value1'),
        'key2': ('file2', 'value2'),
        'key3': ('file3', 'value3')
        }

for key, value in files.iteritems():
    print key, value[0], value[1]

>>key3 file3 value3
>>key2 file2 value2
>>key1 file1 value1
  

Однако имейте в виду, что dict не будет сохранять порядок элементов, если это важно для вас.