2014-05-20 2 views
0

в Python 27Загрузил словарь с помощью целочисленного ключа, как его распечатать?

p=100 
dicthg = {} 

for i in range(10): 
    print i 
    dicthg = {i:p}; 

for i in range(10): 
    print "-", i 
    print dicthg[i] 

ошибка клавишного закомментируйте второй цикл и печатает dicthg [я] хорошо.

пытался на второй цикл

for i in dicthg: 

получил только последний пункт (индекс 9)

же, когда

for i,j in dicthg.items(): 
    print i,j 

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

+1

Попробуйте напечатать 'dicthg' перед входом во второй цикл. – juanchopanza

ответ

0

Вы не загрузите его. Вы заменяете весь словарь на каждой итерации цикла. Вот как вы загрузить it.

for i in range(10): 
    print i 
    dicthg[i] = p 
0

Это делает новый словарь только один элемент каждый раз

for i in range(10): 
    print i 
    dicthg = {i:p} 

Сейчас dicthg имеет следующее значение

{9: 100} 

я принимаю ваше намерение было следующее

for i in range(10): 
    print i 
    dicthg[i] = p 

Теперь посмотрим на словарь

{0: 100, 1: 100, 2: 100, 3: 100, 4: 100, 5: 100, 6: 100, 7: 100, 8: 100, 9: 100} 
0
p=100 
dicthg = {i:p for i in range(10)} 

Другой способ создания словаря с использованием словаря понимания.

0

Чтобы получить код работает только заменить:

dicthg = {i:p} 

для

dicthg.update({i:p}) 

Если вы хотите простой способ узнать, что происходит, добавьте эту строку в первом цикле:

print dicthg 

это покажет вам, почему KeyError во втором цикле.

0

Вот модифицированная версия вашей программы:

p=100 
dicthg = {} 

for i in range(10): 
    print i 
    # This is correct/simple way of setting item in dictionary 
    dicthg[i] = p 

print "value of i = " + str(i) 

print "Setting i to 0 again" 
i = 0 

print "new value of i = " + str(i) 

for i in range(10): 
    print "-", i 
    print dicthg[i] 

Так что я сделал две модификации:

  1. Вставка/Добавление элементов в словаре
  2. Сброс значения I к 0, так что мы можем перебирать от 0 до 10

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

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