2017-02-18 4 views
0

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

names = {"James" : "18", 
"Bob" : "19", 
"adam": "39" 
} 

Я хочу его к выходу, как так:

Name1 = {"James" : "18"} 
Name2 = { "Bob" : "19"} 
Name3 = { "adam": "39"} 

Я попытался с помощью для петель, но я был очень неудачным. Я пробовал:

names.items() 

возвращается:

dict_items([('adam', '39'), ('Bob', '19'), ('James', '18')]) 

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

+0

Пожалуйста, покажите код, который вы использовали? – ZdaR

+0

Это просто невозможно, потому что словари неупорядочены (по крайней мере до 3.6), и поэтому 'Name1' может быть' {"James": "18"} 'или' {"Bob": "19"} 'или' {" adam ":" 39 "}'. То же самое для остальных. Кроме того: обновление глобалов или локалей в цикле не кажется хорошей идеей. – MSeifert

+0

@MSeifert Автор не уточнил, что нужно было, он, вероятно, просто хочет «разделить» словаря. – Delgan

ответ

1
for i, (k,v) in enumerate(names.items(), 1): 
    print('Name%d = %r' % (i, {k:v})) 

Name1 = {'Bob': '19'} 
Name2 = {'adam': '39'} 
Name3 = {'James': '18'} 

Примечание: словари не упорядочены, поэтому порядок здесь произвольный. Если вам нужен конкретный заказ, вы можете создать names как OrderedDict, и этот код будет делать то, что вы хотите.

EDIT: так как вы упомянули, что вам нужно хранить дубликаты ключей, вы можете сделать это следующим образом:

names = [("James", "18"), 
     ("Bob", "9"), 
     ("adam", "39")] 
for i, (k,v) in enumerate(names, 1): 
    print('Name%d = %r' % (i, {k:v})) 
+0

Это немного отличается от ожидаемого вывода, содержащего несколько (казалось бы, случайных) пробелов после '' 'и перед': '. – MSeifert

+0

@MSeifert ваша точка бытия? это комментарий о моем ответе или вопрос? Вы предлагаете добавить код для случайного добавления пробелов? – shx2

+0

Я хочу сказать, что ваш ответ (как он сейчас стоит) полностью отклоняется от ожидаемого результата. Возможно, это правда (кто знает)! – MSeifert

Смежные вопросы