python - 如何在不丢失重复值的情况下从两个列表创建字典?

标签 python list dictionary set

我有两个列表:

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 中的值来搜索我正在阅读的行,使用集合或列表会更容易吗?

最佳答案

使用collections.defaultdict :

temp = defaultdict(set)

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

这将创建一个 defaultdict,其中默认值是一个集合,然后循环并为每个键添加值。

如果您想要一个列表,只需更改默认类型以及添加值的方式以匹配 list 界面:

temp = defaultdict(list)

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

当您想测试成员资格时,集合是一个更好的主意(aset 中的某物);这样的测试需要常数时间,而不是列表的线性时间(因此集合成员测试需要固定的时间,与集合的大小无关,而对于列表,它需要更多的时间,与列表中的元素数量成正比) .

关于python - 如何在不丢失重复值的情况下从两个列表创建字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14327247/

相关文章:

Python selenium 获取页面标题

python - 我需要这个子字符串计数程序来返回一个元组

html - 在 HTML 列表中的图像下方添加文本

c++ - 异常和 std::list 类

python - 匹配两个字典中的键,并使用匹配的键和两个关联值创建新字典

c# - 使用另一个字典的键按值对字典进行排序

Python 多处理池队列通信

python - 给定一个列表和一个位掩码,我如何返回 True 索引处的值?

c# - 种子随机分析 :The given key was not present in the dictionary

python - 如何在python中使用正则表达式匹配特定的时间和日期