Как закодировать вложенный словарь? [Python] [дублировать]

mysql_query("YOUR QUERY") OR die("Error:".mysql_error());
5
задан Arijit 3 May 2017 в 06:47
поделиться

4 ответа

В качестве запрошенного вывода код выглядит следующим образом

    d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}

    for k1,v1 in d.iteritems(): # the basic way
        temp = ""   
        temp+=k1
        for k2,v2 in v1.iteritems():
           temp = temp+" "+str(k2)+" "+str(v2)
        print temp

Вместо iteritems () вы также можете использовать элементы (), но iteritems () намного эффективнее и возвращает итератор .

Надеюсь, это поможет:)

6
ответ дан Sunil Lulla 16 August 2018 в 04:19
поделиться

Итерация через словарь дает вам ключи.

Вы сказали python ожидать кучу кортежей, и он пытался распаковать что-то, что не было кортежем (ваш код настроен на ожидание каждый итерированный элемент имеет вид (key,value), что не было (вы просто получали key на каждой итерации).

Вы также пытались напечатать Key, что не является как key, что привело бы к NameError.

for key in d:
    print(key)

должно работать.

3
ответ дан Ken Wei 16 August 2018 в 04:19
поделиться

Чтобы получить нужные ключи и значения dict.items():

for key, value in d.items():
    print(key)

Если вам нужны только клавиши:

for key in d:
    print(key)
5
ответ дан Stephen Rauch 16 August 2018 в 04:19
поделиться
  • 1
    Для python2 вы можете предпочесть dict.iteritems() вместо этого, это быстрее для этого варианта использования. – jadsq 3 May 2017 в 06:52
  • 2
    Это не ответ на вопрос о том, как пройти через вложенный dict. – TimZaman 1 August 2018 в 23:45
d = {'dict1': {'foo': 1, 'bar': 2}, 'dict2': {'baz': 3, 'quux': 4}}

for i in d.keys():
    print i

    for j in d[i].keys(): 
        print j 
Выход

:

dict1 

foo
bar

dict2

baz 
quux
4
ответ дан Vadim Landa 16 August 2018 в 04:19
поделиться
Другие вопросы по тегам:

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