无法访问嵌套的字典元素python

时间:2015-11-15 12:14:57

标签: python python-2.7 dictionary

我想在嵌套字典中增加元素(int):

letters[c]['rep'] += 1

其中c是一个键的字符串。例如,如果c是'a',那么它应该这样做:

letters['a']['rep'] += 1

但它会增加字典中所有c的所有'rep'。如何解决这个问题?谢谢!

EDIT1: 信件以这种方式启动:

def initilize_dict():
    for letter in ascii_lowercase:
        letters[letter] = data

数据是:

data = {'rep': 0,
    'next': [],
    'freq': 0,
    'dev': 0}

空字母字母看起来像这样:

{'a': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'b': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'c': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'd': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'e': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'f': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'g': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'h': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'i': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'j': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'k': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'l': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'm': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'n': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'o': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'p': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'q': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'r': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 's': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 't': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'u': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'v': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'w': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'x': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'y': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0},
 'z': {'dev': 0, 'freq': 0, 'next': [], 'rep': 0}}

1 个答案:

答案 0 :(得分:1)

letters字典中的所有值都是相同的字典;所以改变一个值也会影响其他值。

def initilize_dict():
    for letter in ascii_lowercase:
        letters[letter] = data  # <--- referencing the same dictionary

使用分隔的字典对象来避免它。