- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在下面的代码中,什么更高效/更“Pythonic”?使用 try-catch 子句还是 if-else 子句?
fname = 'AdobeARM.log'
letters = {}
with open(fname,'r') as f:
for line in f:
for c in line:
try:
letters[c] += 1
except KeyError:
letters[c] = 1
print letters
VS.
fname = 'AdobeARM.log'
letters = {}
with open(fname,'r') as f:
for line in f:
for c in line:
if letters.has_key(c):
letters[c] += 1
else:
letters[c] = 1
print letters
我倾向于使用 try catch 选项,但我不确定为什么。
最佳答案
使用 dict.get()
:
get(key[, default])
Return the value for key if
key
is in the dictionary, elsedefault
. Ifdefault
is not given, it defaults toNone
, so that this method never raises aKeyError
.
换句话说d.get('x', c)
相当于 d['x'] if 'x' in d else c
.
示例:
In [24]: d = {'a':1, 'b':2}
In [27]: d['d'] = d.get('d', 0) + 1 # 0 is the default value
In [28]: d
Out[28]: {'a': 1, 'b': 2, 'd': 1}
In [29]: d['d'] = d.get('d', 0) + 1
In [30]: d
Out[30]: {'a': 1, 'b': 2, 'd': 2}
关于Python:尝试除了 KeyError 与 if has_key(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12342822/
尝试处理 ruby 中的嵌套哈希时,出现此错误: undefined method `has_key' for {"_l"=>{"or"=>"@`"}, "a"=>{}}:Hash (NoMeth
我想检查 Scrapy 项目中是否设置了字段。但我在该项目上使用 has_key 时,出现此错误: Traceback (most recent call last): File "d:\pyth
我有这段代码: def separate_sets(self): self.groups = {} self.group_names = list(set(self.y)) i
我正在运行一段免费的Python代码,用于检测单细胞测序数据中的CNV: #!/usr/bin/env python import sys def main(): infilename = s
我有一个收藏:[一,乙,丙]我想验证哈希是否包含此集合的某些键 我尝试: col = [a, b, c] my_hash = {c => 1, f => 2, h => 3} my_hash.has_
Ruby Hash 的两种方法之间有什么区别,还是只是“有不止一种方法可以做到”? 我看不出两者之间有任何可衡量的区别。 谢谢, 最佳答案 根据Ruby source , has_key?, key?
我有三个哈希: a = {key:"value"} b = {"key"=>"value"} c = {:key=>"value"} 这些结果: a.has_key?("key") # => fals
在 Python 中遍历图形时,我收到此错误: 'dict' object has no attribute 'has_key' 这是我的代码: def find_path(graph, start,
if dictionary.has_key('school'): 你会怎么用javascript写这个? 最佳答案 hasOwnProperty : if(Object.prototype.hasOw
我已将代码更改为: print '\n' search = raw_input("For which account are you searching: ") f = shelve.open("pa
我正在使用 JSON SQLAlchemy 列,我的查询语句需要 'has_key' 属性,但显然我的 'Comparator' 对象没有这个属性。 Transaction.query.filter(
python dict has_key() 方法的时间复杂度是多少?它是 O(1) 就像字典中的键那样吗? 最佳答案 简答:最坏情况是O(n)。但是平均情况时间复杂度是O(1)。然而,最坏的情况非常很
我得到:'Lantern' 类型的参数在其中一个模板引擎文件 (Cheetah) 中不可迭代。您可以猜到 obj 是一个灯笼(见下文)。 NameWrapper.py: if hasattr(obj,
这个问题在这里已经有了答案: `if key in dict` vs. `try/except` - which is more readable idiom? (11 个回答) 关闭6年前。 在下面
我知道这在 python 2 中是一种非常有效的方式,可以与 2 个字典相交 filter(dict_1.has_key, dict_2.keys()) 然而 has_key() 已从 Python3
我阅读了“Python Cookbook”,并在“查找两个字典的交集”一节中看到了作者推荐使用这种单行代码的内容: filter(another_dict.has_key, some_dict.key
def _is_dev_mode(): # quick hack to check if the program is running in dev mode. # if 'has_k
我有一个散列 vars = {"a"=> "Name", "b"=> "Address", "c"=> "Phone"}。我想检查这条线的性能: vars.has_key(:b)? 是 O(1) 还是
我有一个 html 文件和一个单独的 python 文件。我正在寻找具有特定 id 的 formdata 值。我的 html 文件中的表单是正确的并且可以在 Python 2 中工作。在Python
我有以下 Python 代码块: data = json.loads(line) if data.has_key('derivedFrom'): dFin = data['derivedFr
我是一名优秀的程序员,十分优秀!