在Python中,使用"dict"与关键字或匿名词典?

Kir*_*ser 7 python

假设您要将值的字典传递给函数,或者希望使用不会被重用的短期字典.有两种简单的方法可以做到这一点:

使用该dict()函数创建字典:

foo.update(dict(bar=42, baz='qux'))
Run Code Online (Sandbox Code Playgroud)

使用匿名词典:

foo.update({'bar': 42, 'baz': 'qux'})
Run Code Online (Sandbox Code Playgroud)

你喜欢哪个?选择一个而不是个人风格有其他原因吗?

Dav*_*ebb 17

我更喜欢匿名dict选项.

由于我不喜欢的dict()原因,我不喜欢这个选项:

 i = int("1")
Run Code Online (Sandbox Code Playgroud)

使用该dict()选项,你不必要地调用一个增加开销的函数,你不需要:

>>> from timeit import Timer
>>> Timer("mydict = {'a' : 1, 'b' : 2, 'c' : 'three'}").timeit()
0.91826782454194589
>>> Timer("mydict = dict(a=1, b=2, c='three')").timeit()
1.9494664824719337
Run Code Online (Sandbox Code Playgroud)

  • 多年来我一直在使用匿名词汇(从我的Perl时代开始).直到今天早上,我才真正想过为什么会这么想,你的回答非常接近我的感受,但从未正式表达过. (2认同)

Pet*_*sen 6

我想在这个特定的情况下我可能更喜欢这个:

foo.update(bar=42, baz='qux')
Run Code Online (Sandbox Code Playgroud)

在更一般的情况下,我经常更喜欢文字语法(你称之为匿名字典,尽管它使用{}时也是匿名使用dict()).我认为这对维护程序员(通常是我)来说更清楚,部分原因是它在语法高亮的文本编辑器中脱颖而出.它还确保当我必须添加一个不能表示为Python名称的键时,就像有空格的东西一样,那么我不必去重写整行.