当密钥是字符串的第二个值时,如何将多个字符串列表附加到字典中的键?

时间:2015-08-03 03:29:39

标签: python python-3.x dictionary

我们说我有

data = [['Sea', 'Blue', 'Fish', 'Swim'], 
    ['Bored', 'Annoyed', 'Frustrated', 'Done'], 
    ['Keyboard', 'Blue', 'Desktop', 'Mouse']]

我需要让函数返回

{'Blue': [['Sea', 'Fish', 'Swim'], ['Keyboard', 'Desktop', 'Mouse']],    
    'Annoyed': [['Bored', 'Frustrated, 'Done']]}

我有这个功能我做了

def func():
    b = dict()
    for element in data:
        for i in element:
                if i[1] in b:
                    b[i[1]].append(i[0], i[2], i[3])
                else:
                    b[i[1]] = (i[0], i[2], i[3])

但它返回:

builtins.IndexError: string index out of range

我希望这是有道理的,谢谢你提前

1 个答案:

答案 0 :(得分:1)

您正在嵌套太多循环。 element已经是['Sea', 'Blue', 'Fish', 'Swim'等内部列表。i因此是字符串的字符。

还有一些其他问题,请参阅以下评论:

def func():
    b = dict()
    for element in data:
        if element[1] in b:
            b[element[1]].append([element[0], element[2], element[3]]) # append takes one argument
        else:
            b[element[1]] = [[element[0], element[2], element[3]]]  # list, not tuple
    return b