在Python中创建一个新的dict

leo*_*ora 416 python dictionary list

我想用Python构建一个字典.但是,我看到的所有示例都是从列表中实例化字典等...

如何在Python中创建一个新的空字典?

Jan*_*cak 607

dict没有参数调用

new_dict = dict()
Run Code Online (Sandbox Code Playgroud)

或者简单地写

new_dict = {}
Run Code Online (Sandbox Code Playgroud)

  • @Matt显然CPython 2.7 dict()速度慢(慢6倍?),请参阅:http://doughellmann.com/2012/11/the-performance-impact-of-using-dict-instead-of-in-cpython -2-7-2.html无论如何我开始更喜欢构造函数语法,因为我发现在dicts和函数调用之间输入和移动代码更容易. (48认同)
  • dict()和{}之间有什么区别吗?或者人们只是喜欢一个而不是另一个? (32认同)
  • 我确认在python 3.x中使用{}比使用dict()快3倍 (14认同)
  • 是的,我在python 3.6中的速度提高了4倍,``}`比`dict()`快5倍,而`[]`比`list()`快5倍. (7认同)
  • 在绝大多数情况下,如果它需要花费六倍的时间并不重要,因为这仍然是一个不明显的时间. (6认同)

TJD*_*TJD 229

你可以这样做

x = {}
x['a'] = 1
Run Code Online (Sandbox Code Playgroud)

  • +1表示如何向其添加新元素的下一个逻辑问题 (98认同)

fyn*_*yrz 25

知道如何编写预设字典也很有用:

cmap =  {'US':'USA','GB':'Great Britain'}

# Explicitly:
# -----------
def cxlate(country):
    try:
        ret = cmap[country]
    except KeyError:
        ret = '?'
    return ret

present = 'US' # this one is in the dict
missing = 'RU' # this one is not

print cxlate(present) # == USA
print cxlate(missing) # == ?

# or, much more simply as suggested below:

print cmap.get(present,'?') # == USA
print cmap.get(missing,'?') # == ?

# with country codes, you might prefer to return the original on failure:

print cmap.get(present,present) # == USA
print cmap.get(missing,missing) # == RU
Run Code Online (Sandbox Code Playgroud)

  • 好点子!但我觉得`cxlate`的这一点让你的答案看起来太复杂了.我只保留初始化部分.(`cxlate`本身太复杂了.你可以'返回cmap.get(country,'?')`.) (4认同)
  • 也许我会,除了文档对我来说绝对不透明——这太糟糕了。我不知道他们要我做什么,也不知道我为什么要这样做。而且 .get() 似乎做的完全正确——而且它非常灵活。我确定这是我缺乏了解。考虑到这一点,我的问题是:为什么要打扰?这里保存了什么,这里更容易,这里更快,等等?利益究竟是什么? (2认同)
  • 不相关,但您应该明确地捕获“KeyError”而不是一个空的 except(它会捕获诸如“KeyboardInterrupt”和“SystemExit”之类的东西)。 (2认同)

Atu*_*ind 17

>>> dict(a=2,b=4)
{'a': 2, 'b': 4}
Run Code Online (Sandbox Code Playgroud)

将在python字典中添加值.


uke*_*ssi 14

d = dict()
Run Code Online (Sandbox Code Playgroud)

要么

d = {}
Run Code Online (Sandbox Code Playgroud)

要么

import types
d = types.DictType.__new__(types.DictType, (), {})
Run Code Online (Sandbox Code Playgroud)

  • 对于读到这里的人来说:最后一个“解决方案”有点像个笑话 - 你_可以_使用它(至少在 python 2.x 中 - 在 py3k 中不起作用),但没有人愿意这样做所以 ;-) (5认同)

sud*_*aju 7

>>> dict.fromkeys(['a','b','c'],[1,2,3])


{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}
Run Code Online (Sandbox Code Playgroud)

  • 问题指出字典应该是一个新的空实例 (2认同)

Vis*_*hak 5

因此,有两种创建字典的方法:

  1. my_dict = dict()

  2. my_dict = {}

但是,在这两个选项{}中,比dict()加上其可读性更有效。 在这里检查