如何转换包含键和列表值列表的字典?

时间:2020-11-03 04:25:54

标签: python-3.x dataframe dictionary nested-lists

  • 如何将包含键和列表值列表的字典转换为包含键和列表的字典,并在新创建的列表中删除重复项?
  • 我尝试运行以下功能,并且计算机出现“内存错误”
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]}

1 个答案:

答案 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]}

符合预期