1
nervouna 2013-02-25 11:33:14 +08:00
dict() 可读性更高,这个问题萝卜白菜吧。
|
2
TankyWoo OP |
3
jybox 2013-02-25 12:35:12 +08:00
我不是很了解Python, 但类似这样的争议在其他语言也有.
我觉得还是应该从编写方便、可读性方面来考虑, 至于解释器的问题, 如果问题明显, 人家早晚会改正的, 不明显的话忽略就是了. |
4
goxofy 2013-02-25 12:40:05 +08:00
dict()
|
5
ipconfiger 2013-02-25 13:39:14 +08:00 1
这么用类似于
def d(**kwargs): return kwargs 然后就可以 d(a=1,b=2) 其实dict还可以 dict([("a",1),("b",2)]) |
6
TankyWoo OP |
7
tonyseek 2013-02-25 14:41:46 +08:00 1
大多数情况下第一眼看到 {} 会想到这是一个映射结构,因为 Python、Ruby、JavaScript 等语言都这么约定的,所以我不觉得 {} 的可读性不如 dict()
|
9
TankyWoo OP |
10
hit9 2013-02-25 16:28:47 +08:00
dict() 我也不知道为森么
|
11
wenbinwu 2013-02-25 16:42:45 +08:00
dict()
|
12
CoX 2013-02-25 17:19:06 +08:00
{} 感觉很省事啊
|
13
windviki 2013-02-25 17:24:07 +08:00
直接初始化还是觉得{}好看。
dict comprehension在python2.6不行,要兼容的时候就只好dict([(), ()])这样了,里面的list用list comprehension生成。 |
14
wenbinwu 2013-02-25 20:07:22 +08:00
联想一下, list是用list()还是[]
|
15
Mattsive 2013-02-27 17:34:31 +08:00
http://doughellmann.com/2012/11/the-performance-impact-of-using-dict-instead-of-in-cpython-2-7-2.html
dict() 的效率比 {} 要慢好几倍,但为了代码的直观性还是建议用 dict() |
17
zhangxiao 2013-02-28 00:04:55 +08:00
{},可能js带的习惯吧
|
18
est 2013-02-28 08:35:59 +08:00 1
新建空dict用 a = {}
深复制dict用 a = dict(b, newkey='newval') 更加优雅。 |
19
mengzhuo 2013-02-28 10:06:24 +08:00
{}
这个才是Pythonic的写法 再说字典推导的时候能用dict()吗~ |
20
TankyWoo OP @mengzhuo
In [1]: lst = [1,2,3] In [2]: dic = dict([(v, v*2) for v in lst]) In [3]: dic Out[3]: {1: 2, 2: 4, 3: 6} dict()也可以实现的,不过麻烦些 |
22
Js 2013-02-28 11:15:46 +08:00
不是海量创建字典还是用dict这个函数吧
python新搞出了个{}创建set的语法, 一不小心把{'a':'b'}敲成{'a','b'}又没发现就囧了 |
23
TankyWoo OP |
24
Smartype 2013-02-28 15:10:33 +08:00 via iPad
[], {} 都是Python的优点。
非要说dict()易读,呵呵 |
25
TankyWoo OP |
26
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 去实现啦。 |
27
Smartype 2013-03-05 17:04:32 +08:00
@nervouna 真没有什么有意义的理由。你这样就是为了了答案而出题。
真不知道为什么不直接那样写。 D1 = { 'a': 1, 'b': 2, 'c': 3 } 习惯而已。其实不所谓好坏。我就觉得{}少敲几下键盘,也及其直观。任何语言都是要考虑效率的,当然不同语言对效率的要求不一样。最好别说Python不在乎效率,在乎效率就得用C。 |
28
Smartype 2013-03-05 17:07:56 +08:00
这么说吧,静态 dict 当然直接用 {}, 动态构造显然 dict() 更方便
|
29
nervouna 2013-03-06 07:05:17 +08:00
@Smartype 對啊,習慣而已。我這裡確實有點鑽牛角尖了,哈哈。
另,我用 Python 就是為了很快出原型,所以從來就沒有考慮過效率問題。這也是我沒說明的地方。 |
30
TankyWoo OP |