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))
{Group1: [[1,2,3,4], [1, 2, 5, 6 ]]}
{Group1: [1,2,3,4,5,6]}
答案 0 :(得分:0)
据我了解,您本质上想要做的是在保留唯一项目的同时整理列表。
可以通过将list
转换为set
然后再返回到list
来获得唯一项。
this帖子中对拆包部分进行了很好的解释。这是适合您的工作代码-
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]}
请告诉我这是否回答了您的查询。
编辑列表之间的Integer值-
如果我们有一个介于两者之间的整数值的列表,那么您将得到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]}
符合预期