[Python]大家是喜欢用{}还是dict()创建字典?

2013-02-25 11:13:13 +08:00
 TankyWoo
最先开始我是用"{}",不过后来觉得"dict()"看起来舒服,逐渐改用 "dict()"了

不过今早看了Doug Hellmann的一篇文章《The Performance Impact of Using dict() Instead of {} in CPython 2.7》 http://doughellmann.com/2012/11/the-performance-impact-of-using-dict-instead-of-in-cpython-2-7-2.html

经过各种验证(不得不佩服大牛对技术的钻研精神,和对结论的严谨态度),一般情况下,还是"{}"的效率要高一些
11816 次点击
所在节点    Python
31 条回复
TankyWoo
2013-02-28 10:56:55 +08:00
@est

深复制这里还没想到,这个不错!学习了!
Js
2013-02-28 11:15:46 +08:00
不是海量创建字典还是用dict这个函数吧
python新搞出了个{}创建set的语法, 一不小心把{'a':'b'}敲成{'a','b'}又没发现就囧了
TankyWoo
2013-02-28 11:41:32 +08:00
@Js 嗯,我也是LS的@mengzhuo 提到字典推导,才去看了下这个特性,2.7出来的,以前没注意到

可以生成set或dict
Smartype
2013-02-28 15:10:33 +08:00
[], {} 都是Python的优点。
非要说dict()易读,呵呵
TankyWoo
2013-02-28 15:22:25 +08:00
@Smartype 这个“易读”是相对个人的,我只是说对于我来说,我感觉这个看起来更舒服

而且楼上我也说了,这个是和写代码的人拥有的其他语言背景有关的。
nervouna
2013-03-05 15:45:39 +08:00
@Smartype
比方说,用两个 list 做字典
keys = ['a', 'b', 'c']
values = [1, 2, 3]

# 用 {}
D1 = {}
for (k, v) in zip(keys, values): D[k] = v

# 用 dict()
D2 = dict(zip(keys, values))

dict() 看起来会稍微直观一些。

追求效率的话就用 C 去实现啦。
Smartype
2013-03-05 17:04:32 +08:00
@nervouna 真没有什么有意义的理由。你这样就是为了了答案而出题。

真不知道为什么不直接那样写。
D1 = {
'a': 1,
'b': 2,
'c': 3
}

习惯而已。其实不所谓好坏。我就觉得{}少敲几下键盘,也及其直观。任何语言都是要考虑效率的,当然不同语言对效率的要求不一样。最好别说Python不在乎效率,在乎效率就得用C。
Smartype
2013-03-05 17:07:56 +08:00
这么说吧,静态 dict 当然直接用 {}, 动态构造显然 dict() 更方便
nervouna
2013-03-06 07:05:17 +08:00
@Smartype 對啊,習慣而已。我這裡確實有點鑽牛角尖了,哈哈。
另,我用 Python 就是為了很快出原型,所以從來就沒有考慮過效率問題。這也是我沒說明的地方。
TankyWoo
2013-03-06 10:02:54 +08:00
@nervouna
@Smartype

好了,也就是给大家那篇文章看看,这个没啥争议的,萝卜白菜的问题。

大量创建肯定{}了,小量就随便了,作者在文中也提到了,越来越多人喜欢用dict(),但是具体原因也不清楚
hijoker
2015-11-27 02:07:36 +08:00
@TankyWoo
@est 怎么深复制??别误导人....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/61265

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX