如何从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'}
另一答案
你可以使用zip
和dict 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
将删除重复的key
s;使用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个列表中删除重复的元素并形成字典的主要内容,如果未能解决你的问题,请参考以下文章