从另一个函数,我有像('falseName', 'realName', positionOfMistake)
这样的元组,例如。 ('Milter', 'Miller', 4)
。
我需要编写一个函数来创建这样的字典:
D={realName:{falseName:[positionOfMistake], falseName:[positionOfMistake]...},
realName:{falseName:[positionOfMistake]...}...}
该函数必须将字典和上面的元组作为参数。
我开始想这样的事情:
def addToNameDictionary(d, tup):
dictionary={}
tup=previousFunction(string)
for element in tup:
if not dictionary.has_key(element[1]):
dictionary.append(element[1])
elif:
if ...
但它不起作用,我有点被困在这里。
答案 0 :(得分:16)
如果只是添加一个新元组,并且你确定内部字典中没有冲突,你可以这样做:
def addNameToDictionary(d, tup):
if tup[0] not in d:
d[tup[0]] = {}
d[tup[0]][tup[1]] = [tup[2]]
答案 1 :(得分:8)
字典的setdefault是一个很好的方法来更新现有的dict条目,如果它存在,或者创建一个新条目,如果它不是一次性的:
循环风格:
# This is our sample data
data = [("Milter", "Miller", 4), ("Milter", "Miler", 4), ("Milter", "Malter", 2)]
# dictionary we want for the result
dictionary = {}
# loop that makes it work
for realName, falseName, position in data:
dictionary.setdefault(realName, {})[falseName] = position
字典现在等于:
{'Milter': {'Malter': 2, 'Miler': 4, 'Miller': 4}}