小编典典

如何从两个列表创建字典而又不丢失重复值?

python

我有两个清单:

pin_list = ['in0', 'in1', 'in2', 'y']
delvt_list = ['0.399', '0.1995', '0.1995', '0.399']

我使用代码: temp = dict(zip(delvt_list,pin_list))但是得到以下信息:

temp = {'0.1995': 'in2', '0.399': 'y'}

我需要编写哪些Python代码才能获得:

temp =  {'0.1995': {'in2', 'in1'}, '0.399': {'y', 'in0'}}

要么

temp =  {'0.1995': ['in2', 'in1'], '0.399': ['y', 'in0']}

另一个问题是,如果我想使用其中的值temp来搜索要读取的行,使用集或列表会更容易吗?


阅读 217

收藏
2021-01-20

共1个答案

小编典典

用途collections.defaultdict

temp = defaultdict(set)

for delvt, pin in zip(delvt_list, pin_list):
    temp[delvt].add(pin)

这将创建一个defaultdict默认值是set的位置,然后循环并为每个键添加值。

如果要使用列表,只需更改默认类型以及添加值以匹配list接口的方式即可:

temp = defaultdict(list)

for delvt, pin in zip(delvt_list, pin_list):
    temp[delvt].append(pin)

当您要测试成员资格(something in aset)时,集合是一个更好的主意。此类测试花费的时间是固定时间,而不是列表的线性时间(因此,集合成员资格测试花费固定的时间量,与集合的大小无关,而列表花费的时间则与列表中元素的数量成比例)

2021-01-20