我想在嵌套字典中增加元素(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}}
答案 0 :(得分:1)
letters
字典中的所有值都是相同的字典;所以改变一个值也会影响其他值。
def initilize_dict():
for letter in ascii_lowercase:
letters[letter] = data # <--- referencing the same dictionary
使用分隔的字典对象来避免它。