为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的列表中的重复项即使使用 set 也不会合并?

为什么我的列表中的重复项即使使用 set 也不会合并?

杨魅力 2023-12-12 10:14:35
该问题的一个示例如下所示:[{'00016F745862898F': ['2963419753', '5737807753', '2963419753', '5737807753', '', ''],  '00157F1570C74E09': ['2362603155', '7053812209', '', '', '', '7053812209']}我希望将相同的数字合并在一起。我正在尝试从此字典创建另一本字典,但每当我尝试设置或联合时,我仍然得到相同的结果。我使用 set 的原因是因为这些值来自将列表合并在一起。我正在尝试将其合并到我的代码中,''并删除它。如果令人困惑,我可以显示整个代码。我已经尝试过的代码:for k, v in full.items():    tmp = []    for i in v:        if i != '':            tmp.append(i)    list(set().union(tmp))    out[k] = tmp    print(tmp)和for k, v in full.items():    tmp = []    for i in v:        if i != '':            tmp.append(i)    out[k] = set(tmp)    print(tmp)这些仍然给我与上面相同的输出。所需的输出如下,其中相同的元素将合并:[{'00016F745862898F': ['2963419753', '5737807753',],  '00157F1570C74E09': ['2362603155', '7053812209',]}
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

就这么简单?


old = {'00016F745862898F': ['2963419753', '5737807753', '2963419753', '5737807753', '', ''],'00157F1570C74E09': ['2362603155', '7053812209', '', '', '', '7053812209']}


new = {key: list(set(val)-{''}) for key, val in old.items()}


查看完整回答
反对 回复 2023-12-12
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

在你的第一个例子中

list(set().union(tmp))

这将创建一个新集合和一个新列表,同时保持tmp完整。您必须保存这个经过重复数据删除的新列表并在以后使用它。

在你的第二个例子中

out[k] = set(tmp)
print(tmp)

您保存了新的一组,但仍在打印旧的一组。您应该已经使用过print(out[k])或类似的。


查看完整回答
反对 回复 2023-12-12
  • 2 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信