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

该问题的一个示例如下所示:


[{'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',]}


杨魅力
浏览 60回答 2
2回答

萧十郎

就这么简单?old = {'00016F745862898F': ['2963419753', '5737807753', '2963419753', '5737807753', '', ''],'00157F1570C74E09': ['2362603155', '7053812209', '', '', '', '7053812209']}new = {key: list(set(val)-{''}) for key, val in old.items()}

眼眸繁星

在你的第一个例子中list(set().union(tmp))这将创建一个新集合和一个新列表,同时保持tmp完整。您必须保存这个经过重复数据删除的新列表并在以后使用它。在你的第二个例子中out[k] = set(tmp) print(tmp)您保存了新的一组,但仍在打印旧的一组。您应该已经使用过print(out[k])或类似的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python