从 python 中的字典中删除重复项
Remove duplicate from dictionary in python
我在字典中有 5 个列表我想通过比较所有可用列表来删除重复项并保留出现在第一个列表中的元素
dict = {1:[0,1,2,3], 2:[1,4,5], 3:[0,4,2,5,6], 4:[0,2,7,8], 5:[9]}
输出应如下所示:
dict = {1:[0,1,2,3], 2:[4,5], 3:[6], 4:[7,8], 5:[9]}
可以做一个set来存放看过的items,然后根据set依次更新dict:
d = {1:[0,1,2,3], 2:[1,4,5], 3:[0,4,2,5,6], 4:[0,2,7,8], 5:[9]}
seen = set()
for k, v in d.items():
d[k] = [x for x in v if x not in seen]
seen.update(d[k])
print(d) # {1: [0, 1, 2, 3], 2: [4, 5], 3: [6], 4: [7, 8], 5: [9]}
单行词典理解:
>>> {k: [i for i in v if i not in sum(list(dct.values())[:idx], [])] for idx, (k, v) in enumerate(dct.items())}
{1: [0, 1, 2, 3], 2: [4, 5], 3: [6], 4: [7, 8], 5: [9]}
>>>
它过滤并展平列表中特定键之前的所有值,并过滤不在其中的值。
P.S。我将你的 dict
重命名为 dct
这样它就不会覆盖函数名称
我在字典中有 5 个列表我想通过比较所有可用列表来删除重复项并保留出现在第一个列表中的元素
dict = {1:[0,1,2,3], 2:[1,4,5], 3:[0,4,2,5,6], 4:[0,2,7,8], 5:[9]}
输出应如下所示:
dict = {1:[0,1,2,3], 2:[4,5], 3:[6], 4:[7,8], 5:[9]}
可以做一个set来存放看过的items,然后根据set依次更新dict:
d = {1:[0,1,2,3], 2:[1,4,5], 3:[0,4,2,5,6], 4:[0,2,7,8], 5:[9]}
seen = set()
for k, v in d.items():
d[k] = [x for x in v if x not in seen]
seen.update(d[k])
print(d) # {1: [0, 1, 2, 3], 2: [4, 5], 3: [6], 4: [7, 8], 5: [9]}
单行词典理解:
>>> {k: [i for i in v if i not in sum(list(dct.values())[:idx], [])] for idx, (k, v) in enumerate(dct.items())}
{1: [0, 1, 2, 3], 2: [4, 5], 3: [6], 4: [7, 8], 5: [9]}
>>>
它过滤并展平列表中特定键之前的所有值,并过滤不在其中的值。
P.S。我将你的 dict
重命名为 dct
这样它就不会覆盖函数名称