如何转换包含键和列表值列表的字典?
How to convert the dictionary containing keys and list of list value?
- 如何将包含键和列表值列表的字典转换为包含键和列表的字典,在新创建的列表中删除重复项?
- 我试过运行下面的函数,电脑得到一个'memory error'
from collections import defaultdict
my_dict = defaultdict(list)
for k, v in zip(df_Group.guest_group, df_Group.list_guest):
for item in v:
v.append(item)
my_dict[k].append(set(v))
- 我的原始字典是从一个数据框的 2 列创建的,例如:
{Group1: [[1,2,3,4], [1, 2, 5, 6 ]]}
- 我想要我的字典:
{Group1: [1,2,3,4,5,6]}
据我了解,您本质上想要做的是在保留独特项目的同时展平您的列表。
独特的项目可以通过将 list
转换为 set
然后再转换回 list
来实现。
拆包部分在 this post 中有很好的解释。这是适合您的工作代码 -
df_dict = {
'Group1': [[1,2,3,4], [1, 2, 5, 6 ]],
'Group2': [[1,2], [2,3],[2,3,4]]
}
final_dict = {}
for k, v in df_dict.items():
# flatten the list using double list comprehension
flat_list = [item for sublist in v for item in sublist]
final_dict[k] = list(set(flat_list))
这给出了 final_dict
作为 -
{'Group1': [1, 2, 3, 4, 5, 6], 'Group2': [1, 2, 3, 4]}
请告诉我这是否回答了您的问题。
编辑列表之间的整数值 -
如果我们有一个介于两者之间的整数值的列表,那么您将得到 int object not iterable error
,要解决它,我们可以检查实例为 int
并自己制作项目列表
工作代码-
df_dict = {
'Group1': [[1,2,3,4], 3, [1, 2, 5, 6 ]],
'Group2': [[1,2], [2,3],[2,3,4]],
}
final_dict = {}
for k, v in df_dict.items():
# making a new list
new_list = []
for item in v:
# for int we will convert it to 1 length list
if isinstance(item, int):
item = [item]
for ele in item:
new_list.append(ele)
final_dict[k] = list(set(new_list))
final_dict
最终命令 -
{'Group1': [1, 2, 3, 4, 5, 6], 'Group2': [1, 2, 3, 4]}
符合预期
- 如何将包含键和列表值列表的字典转换为包含键和列表的字典,在新创建的列表中删除重复项?
- 我试过运行下面的函数,电脑得到一个'memory error'
from collections import defaultdict
my_dict = defaultdict(list)
for k, v in zip(df_Group.guest_group, df_Group.list_guest):
for item in v:
v.append(item)
my_dict[k].append(set(v))
- 我的原始字典是从一个数据框的 2 列创建的,例如:
{Group1: [[1,2,3,4], [1, 2, 5, 6 ]]}
- 我想要我的字典:
{Group1: [1,2,3,4,5,6]}
据我了解,您本质上想要做的是在保留独特项目的同时展平您的列表。
独特的项目可以通过将 list
转换为 set
然后再转换回 list
来实现。
拆包部分在 this post 中有很好的解释。这是适合您的工作代码 -
df_dict = {
'Group1': [[1,2,3,4], [1, 2, 5, 6 ]],
'Group2': [[1,2], [2,3],[2,3,4]]
}
final_dict = {}
for k, v in df_dict.items():
# flatten the list using double list comprehension
flat_list = [item for sublist in v for item in sublist]
final_dict[k] = list(set(flat_list))
这给出了 final_dict
作为 -
{'Group1': [1, 2, 3, 4, 5, 6], 'Group2': [1, 2, 3, 4]}
请告诉我这是否回答了您的问题。
编辑列表之间的整数值 -
如果我们有一个介于两者之间的整数值的列表,那么您将得到 int object not iterable error
,要解决它,我们可以检查实例为 int
并自己制作项目列表
工作代码-
df_dict = {
'Group1': [[1,2,3,4], 3, [1, 2, 5, 6 ]],
'Group2': [[1,2], [2,3],[2,3,4]],
}
final_dict = {}
for k, v in df_dict.items():
# making a new list
new_list = []
for item in v:
# for int we will convert it to 1 length list
if isinstance(item, int):
item = [item]
for ele in item:
new_list.append(ele)
final_dict[k] = list(set(new_list))
final_dict
最终命令 -
{'Group1': [1, 2, 3, 4, 5, 6], 'Group2': [1, 2, 3, 4]}
符合预期