Python中的词典词典?

时间:2011-12-18 09:46:03

标签: python dictionary

从另一个函数,我有像('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 ...

但它不起作用,我有点被困在这里。

2 个答案:

答案 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}}