我有两个清单:
pin_list = ['in0', 'in1', 'in2', 'y'] delvt_list = ['0.399', '0.1995', '0.1995', '0.399']
我使用代码: temp = dict(zip(delvt_list,pin_list))但是得到以下信息:
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来搜索要读取的行,使用集或列表会更容易吗?
temp
用途collections.defaultdict:
collections.defaultdict
temp = defaultdict(set) for delvt, pin in zip(delvt_list, pin_list): temp[delvt].add(pin)
这将创建一个defaultdict默认值是set的位置,然后循环并为每个键添加值。
defaultdict
如果要使用列表,只需更改默认类型以及添加值以匹配list接口的方式即可:
list
temp = defaultdict(list) for delvt, pin in zip(delvt_list, pin_list): temp[delvt].append(pin)
当您要测试成员资格(something in aset)时,集合是一个更好的主意。此类测试花费的时间是固定时间,而不是列表的线性时间(因此,集合成员资格测试花费固定的时间量,与集合的大小无关,而列表花费的时间则与列表中元素的数量成比例) 。
something in aset