gpt4 book ai didi

python - 数组与散列键搜索

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:25 25 4
gpt4 key购买 nike

所以我是一名长期的 perl 脚本编写者,自从几个月前换工作以来,我已经习惯了 python。通常在 perl 中,如果我有一个值列表,我需要检查一个变量(只是为了查看列表中是否有匹配),我发现生成散列来检查更容易,而不是将值放入一个数组,像这样:

$checklist{'val1'} = undef;
$checklist{'val2'} = undef;
...
if (exists $checklist{$value_to_check}) { ... }

显然,由于需要无用的右手值,这会浪费一些内存,但与遍历数组相比,IMO 更高效且更易于编码。

现在在 python 中,无论是搜索列表还是字典,其代码都完全相同:

if value_to_check in checklist_which_can_be_list_or_dict:
<code>

所以我真正的问题是:在 perl 中,hash 方法是处理速度与遍历数组的首选方法,但在 python 中是这样吗?鉴于代码相同,我想知道 python 是否更好地进行列表迭代?对于较大的列表,我是否仍应使用字典方法?

最佳答案

字典是散列。列表上的 in 测试必须遍历每个元素以对其进行检查,而字典上的 in 测试使用哈希来查看键是否存在。 Python 只是不会让您显式循环遍历列表。

Python 也有一个set 数据类型。它基本上是一个没有右手值的散列/字典。如果你想要的是能够建立一个东西的集合,然后测试东西是否已经在那个集合中,你不关心东西的顺序或者一个东西是否在集合中多次,那么set 正是您想要的!

关于python - 数组与散列键搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8147189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com