我有这个:
{'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']}
我理解为什么他们会以这种方式返回,但我不知道如何将这些列表分开。所以,我的问题是如何将列表分开?
答案 0 :(得分:1)
每个键不能有多个值,不能。
您可以创建一个包含现有列表的新列表,并将其设为值:
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()
或者返回给定键的值,或者如果缺少键,则将第二个参数添加为该键的值,然后返回该值。
答案 1 :(得分:1)
首先,您需要创建一个空列表作为字典值:
d = {'Sleep': []}
然后,添加您希望它包含的列表:
item_one = ['Bed', 'Sheets', 'Warm']
d['Sleep'].append(item_one)
item_two = ['TV', 'Computer', 'Phone']
d['Sleep'].append(item_two)
包装成功能:
def add_list_to_dict(to_dict, key, item):
if key not in to_dict.keys():
to_dict[key] = []
to_dict[key].append(item)
# usage:
add_list_to_dict(d, 'Sleep', item_one)
add_list_to_dict(d, 'Sleep', item_two)
或者像这样,使用args:
def add_list_to_dict(to_dict, key, *items):
if key not in to_dict.keys():
to_dict[key] = []
for item in items:
to_dict[key].append(item)
# usage:
add_list_to_dict(d, 'Sleep', item_one, item_two)
答案 2 :(得分:0)
如果您使用相同的密钥,则无法将列表分开。字典与关键值(健康值)对一起使用。有两个不同阵列的关键点是不可能的。可以做的是在字典中有一个字典,如:
{ "key1": { "0": [1, 2...], "1": [44, 55...] } }