python - 如何向一个键添加多个列表?

标签 python python-3.x dictionary

我有这个:

{'Sleep': ['Bed', 'Sheets', 'Warm', 'TV', 'Computer', 'Phone']}

但我想要这个:

{'Sleep': [['Bed', 'Sheets', 'Warm'], ['TV', 'Computer', 'Phone']]}

我尝试过使用:

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

我还尝试了 .extend()b[element[1] +=,代替 .append() 但它正在返回以进行追加:

{'Sleep': ['Bed', 'Sheets', 'Warm', ['TV', 'Computer', 'Phone']]}

并返回+=:

{'Sleep': ['Bed', 'Sheets', 'Warm', 'TV', 'Computer', 'Phone']}

我明白为什么他们会以这种方式返回,但我不知道如何将列表分开。所以,我的问题是如何将列表分开?

最佳答案

每个键不能有多个值,不行。

可以创建一个包含现有列表的新列表,并将其设为以下值:

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

请注意,当键不存在时,我们添加一个嵌套列表。

现在产生:

{'Sleep': [['Bed', 'Sheets', 'Warm'], ['TV', 'Computer', 'Phone']]}

您可以使用dict.setdefault() method而不是在这里测试遏制,也许进行一些切片来构建新列表:

def func():
    for element in data:
        b.setdefault(element[1], []).append([element[:1] + element[2:]) 

dict.setdefault() 返回给定键的值,或者如果该键丢失,则添加第二个参数作为该键的值,然后返回该值。

关于python - 如何向一个键添加多个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788730/

相关文章:

python - 错误,删除 EPD 后使用已弃用的类 PySimpleApp

python - "[Errno 2] No such file or directory"问题

python - 将函数传递给排序函数的键

python - 从 Python 中的字典中提取彼此不相等的随机键

python - 如何避免重新散列字典键?

python - Apscheduler 脚本文件静默停止 - 没有错误

python - 如何通过单击按钮重新启动 tkinter/python 程序?

python - 在带有标记的列和行的 python 字典中创建矩阵

python - 如何从输出中删除空格但保留 python 中的字典值?

Python - 模数格式变量