簡體   English   中英

python 中 unorderd_map 的替代方案是什么? 我們知道key中的默認值:c++中的值為零

[英]What is the alternative of unorderd_map in python? We know that default value in key: value is zero in c++

//in C++
unordered_map<int,int>m;
for (i = 0; i < n; ++i) {
          m[arr[i]]++;
}

#in python
my_dict = {}
for i in range(len(arr)):
       my_dict[arr[i]] += 1 #This gives key error

我確信 C++ 中的默認值設置為零,所以它可以工作。 如何在 Python 中了解 go?

在 python 你可以使用defaultdict

from collections import defaultdict

arr = [1,2,3]

my_dict = defaultdict(int)
for i in range(len(arr)):
    my_dict[arr[i]]+=1

正如@Loocid 建議的那樣, defaultdict是通往 go 的方式。 另一種選擇是使用帶有默認值的get()

my_dict = {}
for i in range(len(arr)):
    my_dict[arr[i]] = my_dict.get(arr[i], 0) + 1

或避免使用索引

my_dict = {}
for a in arr:
    my_dict[a] = my_dict.get(a, 0) + 1

用智能手機寫的,未經檢查

另一種方法是defaultdict 您可以使用 function 設置默認值。

例子:

from collections import defaultdict

def not_inside_dict():
    return 0;

d = defaultdict(not_inside_dict)

d[1] = 7
d[2] = 9

for i in range(1,4):
    print(d[i])

結果:

7
9
0

你也可以這樣聲明:

from collections import defaultdict

d = defaultdict(int)

d[1] = 7
d[2] = 9

for i in range(1,4):
    print(d[i])

當遇到不在字典內的元素時,它仍然會返回0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM