![](/img/trans.png)
[英]c++ unorderd_map insert fails for value_type with atomic<bool> member
[英]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.