
在 Python 中,当您要将一个字典的值传递给函数,或以其他方式使用一个不会被重复利用的临时字典时,有两种简单的方法可以做到这一点:
一种是使用 dict() 函数创建字典:
foo.update(dict(bar=42, baz='qux'))另一种是使用匿名字典:
foo.update({'bar': 42, 'baz': 'qux'})那么,您更喜欢哪种方法?除了个人风格外,在选择其中一种方法时是否还有其他原因?
对于这个问题,不同的程序员有不同的偏好和看法,下面是几位程序员的回答:
我更喜欢匿名字典选项。我不喜欢 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我认为在这种特殊情况下,我可能会更喜欢这样:
foo.update(bar=42, baz='qux')在更一般的情况下,我通常更喜欢文字语法(您称之为匿名字典,尽管使用 {} 和使用 dict() 一样匿名)。我认为这更清楚地说明了维护程序员(通常是我自己),部分原因是它在使用语法突出显示的文本编辑器中非常突出。它还确保了当我必须添加一个不能表示为 Python 名称的键(比如带有空格的键)时,我不必重新编写整行。
我的回答主要是关于使用字典和关键字参数设计 API。但它也适用于 {…} 和 dict(…) 的单独使用。
要点:保持一致性。如果您的大多数代码将 ‘bar’ 作为字符串引用,请在 {…} 中保持为字符串;如果您通常将其称为标识符 bar,请使用 dict(bar=…)。
我更喜欢您的“匿名字典”方法,我认为这纯粹是个人风格。我只是觉得后一种版本更具可读性,但它也是我习惯看到的。
dict() 方法增加了函数调用的开销。
>>>import timeit,dis
>>> timeit.Timer("{'bar': 42, 'baz': 'qux'}").repeat()
[0.59602910425766709, 0.60173793037941437, 0.59139834811408321]
>>> timeit.Timer("dict(bar=42, baz='qux')").repeat()
[0.98166498814792646, 0.97745355904172015, 0.99231773870701545]我也是,只是出于个人风格。
如果我有许多参数,有时省略键上的引号会很好:
DoSomething(dict(
Name = 'Joe',
Age = 20,
Gender = 'Male',
))顺便说一下,这是一个非常主观的问题。
我认为 dict() 函数真正存在是为了让您可以从其他内容(也许是一些可以轻松生成必要关键字参数的内容)创建字典。匿名方法最适合“字典文字”,就像您使用 “” 表示字符串,而不是 str() 一样。
总之,在 Python 中使用 dict() 函数还是匿名字典来创建字典,很大程度上取决于个人喜好和具体的使用场景。dict() 函数可以更明确地指定键值对,而匿名字典则更简洁直观。在使用时,应根据具体情况选择最合适的方法。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。