python中如何把重复key值合并

ls = [('没有做家务', 0.005), ('30分钟以内', 0.332), ('30-60分钟', 0.451), ('60分钟以上', 0.213), ('没有做家务', 0.017), ('30分钟以内', 0.418), ('30-60分钟', 0.421),('60分钟以上', 0.144)]

期望得到的:
ls =
[('没有做家务', 0.005,0.017), ('30分钟以内', 0.332,0.418), ('30-60分钟', 0.451,0.421), ('60分钟以上', 0.213,0.144)]

阅读 1.6k
2 个回答
ls = [('没有做家务', 0.005), ('30分钟以内', 0.332), ('30-60分钟', 0.451), ('60分钟以上', 0.213), ('没有做家务', 0.017), ('30分钟以内', 0.418), ('30-60分钟', 0.421),('60分钟以上', 0.144)]

ls_dic = {}  # 将 ls 的内容转存到字典 ls_dic 中
for each in ls:
  if each[0] in ls_dic:
    ls_dic[each[0]].append(each[1])
  else:
    ls_dic[each[0]] = [each[1]]

# 此时 ls_dic = {'没有做家务': [0.005, 0.017], '30分钟以内': [0.332, 0.418], '30-60分钟': [0.451, 0.421], '60分钟以上': [0.213, 0.144]}

res = []   # 结果
for k,v in ls_dic.items():
  print(k,v)             # 没有做家务 [0.005, 0.017]
  t = [k]                # t = ['没有做家务']
  for each in v:         # 将 [0.005, 0.017] 分别添加到 t 中
    t.append(each)
  
  res.append(tuple(t))   # 将 t 转为 tuple 再添加到最后的结果中

ls = res

# 最后 ls = [('没有做家务', 0.005, 0.017), ('30分钟以内', 0.332, 0.418), ('30-60分钟', 0.451, 0.421), ('60分钟以上', 0.213, 0.144)]
from collections import defaultdict
new_dict=defaultdict(list)
for k,v in ls.items():
    new_dict[k].append(v)

print(new_dict)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进