如果它的键存在,我需要一种获取字典值的方法,或者None
如果不存在则需要返回.
但是,KeyError
如果搜索不存在的密钥,Python会引发异常.我知道我可以检查密钥,但我正在寻找更明确的东西.None
如果密钥不存在,有没有办法返回?
我有一个dict
有一大堆条目.我只对他们中的一小部分感兴趣.是否有一种简单的方法可以修剪所有其他的?
哪个是用另一个字典扩展字典的最佳方法?例如:
>>> a = { "a" : 1, "b" : 2 }
>>> b = { "c" : 3, "d" : 4 }
>>> a
{'a': 1, 'b': 2}
>>> b
{'c': 3, 'd': 4}
Run Code Online (Sandbox Code Playgroud)
我正在寻找任何操作来获得这个避免for
循环:
{ "a" : 1, "b" : 2, "c" : 3, "d" : 4 }
Run Code Online (Sandbox Code Playgroud)
我希望做的事情如下:
a.extend(b) # This does not work
Run Code Online (Sandbox Code Playgroud) 我想用Python构建一个字典.但是,我看到的所有示例都是从列表中实例化字典等...
如何在Python中创建一个新的空字典?
我正在尝试检查给定的密钥是否在地图中,有些不能这样做:
typedef map<string,string>::iterator mi;
map<string, string> m;
m.insert(make_pair("f","++--"));
pair<mi,mi> p = m.equal_range("f");//I'm not sure if equal_range does what I want
cout << p.first;//I'm getting error here
Run Code Online (Sandbox Code Playgroud)
那么如何打印p中的内容呢?
字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同.这似乎是一个重大变化,但它只是文档中的一小段.它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准.
在保留元素顺序的同时,新字典实现如何比旧字典实现更好?
以下是文档中的文字:
dict()
现在使用PyPy开创的"紧凑"表示.与Python 3.5相比,新dict()的内存使用量减少了20%到25%.PEP 468(在函数中保留**kwargs的顺序.)由此实现.这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现为所有当前和未来的Python实现强制命令保留语义;这也有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5).(由INADA Naoki在issue 27350中提供.最初由Raymond Hettinger提出的想法.)
2017年12月更新:Python 3.7 保证了dict
保留插入顺序
假设我有这个:
[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5},
{"name": "Pam", "age": 7}
]
Run Code Online (Sandbox Code Playgroud)
并通过搜索"Pam"作为名称,我想检索相关字典:{name:"Pam",年龄:7}
怎么做到这一点?
我正在尝试使用NetworkX读取一个Shapefile并使用该函数write_shp()
生成将包含节点和边缘的Shapefile(在此示例之后 < - 此链接现在已经死了),但是当我尝试运行它给出的代码时我有以下错误:
Traceback (most recent call last): File
"C:/Users/Felipe/PycharmProjects/untitled/asdf.py", line 4, in
<module>
nx.write_shp(redVial, "shapefiles") File "C:\Python34\lib\site-packages\networkx\readwrite\nx_shp.py", line
192, in write_shp
for key, data in e[2].iteritems(): AttributeError: 'dict' object has no attribute 'iteritems'
Run Code Online (Sandbox Code Playgroud)
我正在使用Python 3.4并通过pip install安装NetworkX.
这个错误之前,它已经给了我另外一个说:"x范围不存在"或类似的东西,所以我看着它,只是改变xrange
以range
在nx_shp.py文件,这似乎解决它.
根据我的阅读,它可能与Python版本(Python2与Python3)有关.
是否可以在Python中创建字典理解(用于键)?
没有列表推导,你可以使用这样的东西:
l = []
for n in range(1, 11):
l.append(n)
Run Code Online (Sandbox Code Playgroud)
我们可以将其缩短为列表理解:l = [n for n in range(1, 11)]
.
但是,假设我想将字典的键设置为相同的值.我可以:
d = {}
for n in range(1, 11):
d[n] = True # same value for each
Run Code Online (Sandbox Code Playgroud)
我试过这个:
d = {}
d[i for i in range(1, 11)] = True
Run Code Online (Sandbox Code Playgroud)
不过,我得到一个SyntaxError
上for
.
另外(我不需要这部分,但只是想知道),你能否将字典的键设置为一堆不同的值,如下所示:
d = {}
for n in range(1, 11):
d[n] = n
Run Code Online (Sandbox Code Playgroud)
字典理解是否可以实现?
d = {}
d[i for i in range(1, 11)] = [x for …
Run Code Online (Sandbox Code Playgroud) dictionary ×10
python ×8
c# ×1
c++ ×1
key ×1
list ×1
nonetype ×1
python-3.6 ×1
python-3.x ×1
search ×1
stl ×1