python中的dict() vs 哪个更好? [关闭]
Posted
技术标签:
【中文标题】python中的dict() vs 哪个更好? [关闭]【英文标题】:dict() vs in python which is better? [closed]python中的dict() vs 哪个更好? [关闭] 【发布时间】:2013-06-10 11:35:31 【问题描述】:我想知道,在以下 2 种方法中声明字典的最佳做法是什么?为什么?
>>>a=dict(one=2, two=3) # "two":3, "one":2
>>>a="two":3, "one":2
【问题讨论】:
FWIW,我发现了一个不同之处。 dict(zip(foo)) 是可能的。不知道为什么 zip(foo) 在 python 2 或 3 中都是不可能的。我来到这里希望了解原因。 为什么这个问题被关闭了?投票决定关闭它的人本可以通过添加标准来定义better
而不是关闭来改进它。
“哪个更好”而不定义“更好”的含义是广泛的方式
【参考方案1】:
你会相信someone has already analyzed that(从性能的角度来看)。
在 CPython 2.7 中,使用 dict() 创建字典最多需要 6 个 时间长,涉及的内存分配操作比 字面语法。使用 创建字典,特别是如果您是 预先填充它们,除非文字语法不适用于您的 案例。
【讨论】:
考虑到关键字参数作为字典传递,然后必须由dict
构造函数再次复制,这并不奇怪。
有人愿意为 py 3.7 更新这个答案吗?
对于 python3.6 dict() 比 慢 2.5 倍。预填充时,差异为 2 倍。
@mahoriR 来源?【参考方案2】:
第二个更清晰,更易于阅读,并且为此存在特定的语法是一件好事,因为这是一个非常常见的操作:
a = "two":3, "one":2
在一般情况下应该首选它。性能参数是次要问题,但即便如此, 语法更快。
【讨论】:
【参考方案3】:在 Python 中,您应该尽可能使用文字语法。所以[]
用于列表, 用于 dicts 等。其他人更容易阅读,看起来更好,并且解释器会将其转换为更快执行的字节码(容器的特殊操作码,而不是执行函数调用) .
【讨论】:
我没有找到像“更容易阅读,看起来更好”这样的主观理由好的论据:) @Matt 我认为主要的收获是“进入执行速度更快的字节码”,其他人主观地加强了论点,但为了回应你的观点:[(name, cls) for name, cls in dataset_types.__dict__.items() if isinstance(cls, type)]
与 dict([(name, cls) for name, cls in dataset_types.__dict__.items() if isinstance(cls, type)])
,我认为dict()
的版本更容易阅读。
@Matt 我想他们是。正如另一条评论中所述,在某些情况下非文字语法更容易阅读。我认为最好在每种情况下使用最容易阅读的内容。但是,是的,文字语法的性能开销也较小。
dict
比
更“易读”,意思也更清晰... ...
@Matt - 这实际上不是主观的。可读性是 PEP20。以上是关于python中的dict() vs 哪个更好? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Django vs SQLAlchemy:哪个 Python ORM 更好