是否有可能在Python中创建字典理解(用于键)?
如果没有列表理解,您可以使用以下内容:
l = []
for n in range(1, 11):
l.append(n)
我们可以将其缩短为列表理解:l=[n for n in range(1,11)]
。
但是,假设我想将字典的键设置为相同的值。我可以做到:
d = {}
for n in range(1, 11):
d[n] = True # same value for each
我试过这个:
d = {}
d[i for i in range(1, 11)] = True
但是,我在的上得到了一个
SyntaxError
。
此外(我不需要这部分,但只是想知道),你能把字典的键设置为一堆不同的值吗,像这样:
d = {}
for n in range(1, 11):
d[n] = n
这在词典理解中是可能的吗?
d = {}
d[i for i in range(1, 11)] = [x for x in range(1, 11)]
这还会在
的上引发一个
语法错误。
>>> {i:i for i in range(1, 11)}
{1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10}
您可以使用dict.fromkeys
类方法。。。
>>> dict.fromkeys(range(5), True)
{0: True, 1: True, 2: True, 3: True, 4: True}
这是创建所有键映射到相同值的字典的最快方法。
但不要将其用于可变对象:
d = dict.fromkeys(range(5), [])
# {0: [], 1: [], 2: [], 3: [], 4: []}
d[1].append(2)
# {0: [2], 1: [2], 2: [2], 3: [2], 4: [2]} !!!
如果您实际上不需要初始化所有键,那么defaultdict
也可能很有用:
from collections import defaultdict
d = defaultdict(True)
要回答第二部分,你需要的是一个判断理解:
{k: k for k in range(10)}
您可能不应该这样做,但您也可以创建一个子类的代码,它的工作原理有点像默认代码,如果您重写代码__missing__代码:
>>> class KeyDict(dict):
... def __missing__(self, key):
... #self[key] = key # Maybe add this also?
... return key
...
>>> d = KeyDict()
>>> d[1]
1
>>> d[2]
2
>>> d[3]
3
>>> print(d)
{}
Python2.7中有字典理解,但它们的工作方式与您尝试的方式不太一样。就像列表理解一样,他们创建了一个新的词典;不能使用它们向现有词典添加关键字。此外,还必须指定键和值,当然,如果愿意,也可以指定虚拟值。
>>> d = {n: n**2 for n in range(5)}
>>> print d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
如果要将它们全部设置为True:
>>> d = {n: True for n in range(5)}
>>> print d
{0: True, 1: True, 2: True, 3: True, 4: True}
您似乎想要的是一种在现有字典上同时设置多个键的方法。没有直接的捷径。您可以像已经展示的那个样循环,或者您可以使用字典理解来创建一个具有新值的新dict,然后执行oldDict。更新(newDict)
将新值合并到旧dict中。
问题内容: 我需要合并多个词典,例如: 随着A B C和D作为树的叶子像 词典的级别(深度)未知,可能是 在我的情况下,它代表目录/文件结构,其中节点为docs,而节点为文件。 我想将它们合并以获得: 我不确定如何使用Python轻松做到这一点。 问题答案: 这实际上是非常棘手的-特别是如果你希望在事物不一致时收到有用的错误消息,同时正确地接受重复但一致的条目(这里没有其他答案了……)。 假设你没
问题内容: 如何创建具有这种理解力的字典? 问题答案: dict理解具有 自己的名称空间 ,而在该名称空间中没有。从技术上讲,除最外层可迭代对象(此处)之外的所有其他内容,几乎都是作为嵌套函数运行的,最外层可迭代对象作为参数传递。 如果您改用了代码,或者在dict理解 之外 创建了对字典的引用,那么您的代码将起作用: __ 演示:
基础教程介绍了基本概念,特别是对象和类。 进阶教程对基础教程的进一步拓展,说明Python的细节。希望在进阶教程之后,你对Python有一个更全面的认识。 之前我们说了,列表是Python里的一个类。一个特定的表,比如说nl = [1,3,8],就是这个类的一个对象。我们可以调用这个对象的一些方法,比如 nl.append(15)。 我们要介绍一个新的类,词典 (dictionary)。与列表相似
问题内容: 给定一个像这样的字典: 如何创建一个字典列表,该列表结合了第一个字典键的各种值?我想要的是: 问题答案: 我认为您想要笛卡尔积,而不是排列,在这种情况下可以提供帮助:
本文向大家介绍Python字典理解,包括了Python字典理解的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将学习如何在Python中使用字典理解。如果您已经熟悉列表理解,那么学习字典理解就不会花费很多时间。 我们需要键:值对来创建字典。如何使用字典理解来获取这些键值对?请参阅字典理解的一般说明。 我们需要填写以上语句来完成字典理解。有很多方法可以填充它。让我们看看一些最常见的方法。
上面的脚本抛出错误:“ValueError:如果使用所有标量值,则必须传递索引” 我需要字典键作为数据帧列 下面的脚本可以很好地作为字典值添加为列表 请让我知道如何实现这一点?