我有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'}
如何过滤两个列表中的重复元素?
答案 0 :(得分:4)
您可以使用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
;使用dict
构造函数的版本执行相同的操作(只是不那么明确)。
答案 1 :(得分:0)
只需 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'}
答案 2 :(得分:-1)
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))
答案 3 :(得分:-2)
尝试先压缩它们,然后将它们变成一组(以丢弃重复项):
c = list(set(zip(a, b)))
然后根据需要将该列表变成字典:
d = {}
for k, v in c:
d[k] = v
或者只是d = dict(c)
更简单-dict(zip(a,b))