相关疑难解决方法(0)

如果字典键不可用,则返回None

如果它的键存在,我需要一种获取字典值的方法,或者None如果不存在则需要返回.

但是,KeyError如果搜索不存在的密钥,Python会引发异常.我知道我可以检查密钥,但我正在寻找更明确的东西.None如果密钥不存在,有没有办法返回?

python dictionary key nonetype

433
推荐指数
9
解决办法
30万
查看次数

"setdefault"dict方法的用例

加入collections.defaultdict在Python 2.5大大降低用于需要dictsetdefault方法.这个问题适合我们的集体教育:

  1. setdefault今天在Python 2.6/2.7中还有什么用处?
  2. 哪些流行的用例setdefault被取代了collections.defaultdict

python dictionary setdefault

181
推荐指数
7
解决办法
9万
查看次数

python dict:get vs setdefault

以下两个表达式似乎与我相同.哪个更好?

data = [('a', 1), ('b', 1), ('b', 2)]

d1 = {}
d2 = {}

for key, val in data:
    # variant 1)
    d1[key] = d1.get(key, []) + [val]
    # variant 2)
    d2.setdefault(key, []).append(val)
Run Code Online (Sandbox Code Playgroud)

结果是一样的,但哪个版本更好或更富有pythonic?

就个人而言,我觉得版本2难以理解,因为对我而言,setdefault非常难以掌握.如果我理解正确,它会在字典中查找"key"的值,如果不可用,则在"dict"中输入"[]",返回对值或"[]"的引用,并在其中附加"val"参考.虽然顺利但它至少不是直观的(至少对我而言).

在我看来,版本1更容易理解(如果可用,获取"key"的值,如果没有,获取"[]",然后加入由[val]组成的列表并将结果放在"key"中).但是,虽然更直观地理解,但我担心这个版本的性能会降低,所有这些列表都会创建.另一个缺点是"d1"在表达式中出现两次,这是相当容易出错的.可能有一个更好的实现使用get,但目前它没有我.

我的猜测是版本2虽然对于没有经验的人来说更难掌握,但速度更快,因此更可取.意见?

python dictionary get setdefault

46
推荐指数
5
解决办法
4万
查看次数

在if-else子句的else命令中执行"nothing"

码:

for i in range(1000):
    print(i) if i%10==0 else pass
Run Code Online (Sandbox Code Playgroud)

错误:

File "<ipython-input-117-6f18883a9539>", line 2
    print(i) if i%10==0 else pass
                            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

为什么不"通过"在这里工作?

python python-3.x

3
推荐指数
1
解决办法
9134
查看次数

标签 统计

python ×4

dictionary ×3

setdefault ×2

get ×1

key ×1

nonetype ×1

python-3.x ×1