在 Python 中创建一个新字典

Posted

技术标签:

【中文标题】在 Python 中创建一个新字典【英文标题】:Creating a new dictionary in Python 【发布时间】:2012-01-15 12:46:52 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

不带参数调用dict

new_dict = dict()

或者直接写

new_dict = 

【讨论】:

dict()和有区别吗?还是人们只是更喜欢其中之一? @ Matt 显然 CPython 2.7 dict() 更慢(慢 6 倍?),请参阅:doughellmann.com/2012/11/… 无论如何,我开始更喜欢构造函数语法,因为我发现它更容易输入和在字典和函数调用之间移动代码。 我确认在 python 3.x 中使用 比 dict() 快 3 倍 是的,在 python 3.6 中,dict() 快 4 倍,[]list() 快 5 倍。 在绝大多数情况下,如果它需要六倍的时间并不重要,因为这仍然是一个微不足道的时间。【参考方案2】:

你可以这样做

x = 
x['a'] = 1

【讨论】:

【参考方案3】:

了解如何编写预设字典也很有用:

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

【讨论】:

好点!但我认为cxlate 的部分让你的答案看起来太复杂了。我只保留初始化部分。 (cxlate 本身太复杂了,你可以直接return cmap.get(country, '?')。) 考虑使用 docs.python.org/2/library/… 而不是编写翻译函数或在任何地方使用 .get()。 也许我会,除了文档对我来说绝对不透明——这太糟糕了。我不知道他们要我做什么,也不知道我为什么要这样做。并且 .get() 似乎做了完全正确的事情——而且它非常灵活。我敢肯定这是我缺乏理解。考虑到这一点,我的问题是:为什么要打扰?这里保存了什么,这里更容易,这里更快等等?好处究竟是什么? 不相关,但您应该明确捕获 KeyError 而不是一个空的 except(这将捕获诸如 KeyboardInterruptSystemExit 之类的东西)。 Arnav,当然你是对的。相应地进行了编辑。谢谢!【参考方案4】:
>>> dict(a=2,b=4)
'a': 2, 'b': 4

将在python字典中添加值。

【讨论】:

【参考方案5】:
d = dict()

d = 

import types
d = types.DictType.__new__(types.DictType, (), )

【讨论】:

types.DictType.__new__(types.DictType, (), ) 和刚才的 有什么区别 对于任何阅读本文的人:最后一个“解决方案”有点儿笑话 - 你可以使用它(至少在 python 2.x 中 - 不会工作py3k),但它自己的头脑中没有人愿意这样做;-)【参考方案6】:

所以有两种方法可以创建一个 dict :

    my_dict = dict()

    my_dict =

但是在这两个选项中,dict() 更有效,而且它的可读性更强。 CHECK HERE

【讨论】:

为什么要提到python2.7? (在一篇相当老的文章中:2012-11-12,“在 CPython 2.7 中使用 dict() 而不是 的性能影响”) (7 年后)即使在 python 3.x.x 中性能也没有改变,你可以看到它运行 %timeit my_dict = vs %timeit my_dict = dict()【参考方案7】:
>>> dict.fromkeys(['a','b','c'],[1,2,3])


'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]

【讨论】:

问题指出字典应该是一个新的空实例 请检查有问题的详细信息。问题是如何在 Python 中创建一个新的空字典?

以上是关于在 Python 中创建一个新字典的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中反转字典并从重复的键值中创建一个列表

在python中创建认识其他朋友的朋友的字典

如何在eclipse中创建用户字典?

如何在Python中创建一个递归函数来创建一个映射Odoo 8关系字段记录的字典?

如何在 Python 中创建一个 trie

你如何在 Python 中创建嵌套字典?