如何从2个列表中删除重复的元素并形成字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从2个列表中删除重复的元素并形成字典相关的知识,希望对你有一定的参考价值。

我有2个清单:

a=['Sensor', 'Sensor', 'Microphone', 'IFE0', 'IFE0', 'IFE0', 'IFE1', 
   'IFE1', 'IFE1', 'GPU', 'GPU', 'GPU']

和另一个需要映射到其元素的列表。

b=['Source', 'Source', 'Source', 'Process', 'Process', 'Process', 'Process', 
   'Process', 'Process', 'Sink', 'Sink', 'Sink']

我正在尝试创建一个字典,其中列表“a”中的键映射到“b”中的值。我的输出应该是这样的

c={'Sensor': Source,'Microphone': Source,'IFE0': Process,'IFE1':Process,'GPU':Sink'}

如何过滤两个列表上的重复元素?

答案

只做dict(zip(a,b))

zip(a, b)
Output : [('Sensor', 'Source'),
 ('Sensor', 'Source'),
 ('Microphone', 'Source'),
 ('IFE0', 'Process'),
 ('IFE0', 'Process'),
 ('IFE0', 'Process'),
 ('IFE1', 'Process'),
 ('IFE1', 'Process'),
 ('IFE1', 'Process'),
 ('GPU', 'Sink'),
 ('GPU', 'Sink'),
 ('GPU', 'Sink')]

将映射列表a和b(元组列表)的类似索引。

现在将其转换为dict将为您提供独特的字典。

dict(zip(a, b))

output: {'GPU': 'Sink',
 'IFE0': 'Process',
 'IFE1': 'Process',
 'Microphone': 'Source',
 'Sensor': 'Source'}

另一答案

你可以使用zipdict comprehension直接制作一本字典:

c = {key: value for key, value in zip(a, b)}

或者更直接地使用dict构造函数

c = dict(zip(a, b))

为了得到

{'Sensor': 'Source', 'Microphone': 'Source', 'IFE0': 'Process', 
 'IFE1': 'Process', 'GPU': 'Sink'}

zip成对遍历列表的值:

for pairs in zip(a, b):
   print(pairs)

产生

('Sensor', 'Source')
('Sensor', 'Source')
('Microphone', 'Source')
('IFE0', 'Process')
('IFE0', 'Process')
('IFE0', 'Process')
('IFE1', 'Process')
('IFE1', 'Process')
('IFE1', 'Process')
('GPU', 'Sink')
('GPU', 'Sink')
('GPU', 'Sink')

这些条目然后转换为字典 - 映射key, value = pair。然后dict将删除重复的keys;使用dict构造函数的版本也是如此(只是不那么明确)。

另一答案
a=['Sensor', 'Sensor', 'Microphone', 'IFE0', 'IFE0', 'IFE0', 'IFE1', 
   'IFE1', 'IFE1', 'GPU', 'GPU', 'GPU']
b=['Source', 'Source', 'Source', 'Process', 'Process', 'Process', 'Process', 
   'Process', 'Process', 'Sink', 'Sink', 'Sink']
c = dict(zip(a,b))
另一答案

首先尝试压缩它们然后将它们变成一组(以丢弃重复项):

c = list(set(zip(a, b)))

然后根据需要将该列表转换为字典:

d = {}
for k, v in c:
    d[k] = v

或者只是d = dict(c)

甚至更简单 - dict(zip(a,b))

以上是关于如何从2个列表中删除重复的元素并形成字典的主要内容,如果未能解决你的问题,请参考以下文章

13 个非常有用的 Python 代码片段

如何通过名称值从数组中删除字典元素[重复]

python删除列表中的重复元素并保持相对顺序不变

Python - 从字典/列表中删除项目[重复]

30 段 Python 实用代码

即学即用的 30 段 Python 实用代码