【发布时间】:2021-11-14 19:28:06
【问题描述】:
我正在寻找一种有效的 python 方法来利用具有两个键的哈希表: 例如:
(1,5) --> {a}
(2,3) --> {b,c}
(2,4) --> {d}
此外,我还需要能够检索整个条目块,例如所有在第 0 位具有“2”的条目(此处:(2,3) 和 (2,4))。 在另一个post 中,建议使用列表理解,即:
sum(val for key, val in dict.items() if key[0] == 'B')
我了解到字典是(可能?)从 key:value-pairs 的对象中检索值的最有效方法。然而,只调用一个不完整的元组键与查询整个键有点不同,我要么得到一个值,要么什么也没得到。我想问一下python是否仍然可以在与匹配的键:值对数量成正比的时间内返回值?或者,元组字典(加上列表理解)是否比使用 pandas.df.groupby() 更好(但这会占用太多内存空间)?
【问题讨论】:
-
你能用字典吗?所以你会得到
{1: {5: {a}}, 2: {3: {b, c}, 4: {d}}},然后你也可以在 O(1) 中得到一个“块”(而不是对你当前正在做的所有键进行 O(n) 扫描)。 -
“但是,只调用一个不完整的元组键与查询整个键有点不同,我要么得到一个值,要么什么也没有。” 这不仅仅是有点不同。这会将查找从恒定时间更改为线性时间(与字典的总长度成正比)。我认为 jonsharpe 有一个很好的建议。
-
我不愿意使用字典词典。但是在您回答查找正在成为线性时间之后,并且我注意到它比我最初想象的更适合我的代码,我采用了字典方法的字典。谢谢!
标签: python dictionary dictionary-comprehension