您的位置:首页 > 编程语言 > Python开发

python字典

2016-05-10 19:47 337 查看
Python中的字典是完全不同的东西:它们不是序列,而是一种映射。映射是一个其他对象的集合,但是它们是通过键而不是相对位置来存储的。实际上,映射并没有任何可靠的从左至右的顺序。它们简单地将键映射到值。字典是Python核心对象集合中的唯一的一种映射类型,也具有可变性-可以就地改变,并可以随需求增大或减小,就像列表那样。

#encoding=utf-8
D={}
D['name']='Bob'
D['job']='dev'
D['age']=40
print(D)


#encoding=utf-8
rec={'name':{'first':'Bob', 'last': 'Smith'},
'job': ['dev', 'mgr'],
'age': 40.5}
print(rec['name'])
print(rec['name']['last'])
print(rec['job'])
print(rec['job'][-1])
rec['job'].append('janitor')
print(rec)


注意这里的最后一个操作是如何扩展嵌入job列表的。因为job列表是字典所包含的一部分独立的内存,它可以自由地增加或减少。

嵌套允许直接并轻松地建立复杂的信息结构。

在python中,当最后一次引用对象后(例如,将这个变量用其他的值进行赋值),这个对象所占用的内存空间将会自动清理掉。

#encoding=utf-8
rec={'name':{'first':'Bob', 'last': 'Smith'},
'job': ['dev', 'mgr'],
'age': 40.5}
rec=0
print(rec)从技术上说,Python具有一种叫做垃圾收集的特性,在程序运行时可以清理不再使用的内存,并将你从必须管理代码中这样的细节中解放出来。在Python中,一旦一个对象的最后一次引用被移除,空间将会立即回收。
键的排序:for循环
作为映射,字典仅支持通过键获取元素。尽管这样,在各种常见的应用场合,通过调用方法,它们也支持类型特定的操作。

#encoding=utf-8
D={'a':1, 'b':2, 'c':3}
print(D)
for key in sorted(D):
print(key, '=>', D[key])


不存在的键:if测试

尽管我们能够通过给新的键赋值来扩展字典,但是获取一个不存在的键值仍然是一个错误。

in关系表达式允许我们查询字典中一个键是否存在。

#encoding=utf-8
D={'a':1, 'b':2, 'c':3}
print(D)
if not 'f' in D:
print('missing')


创建字典

#创建字典
geek={"404":"page not found",
"uninstalled":"being fired"}
#通过键获取值
print(geek["404"])
输出:



访问字典的值

1. 通过键获取值

如果试图通过字典中没有的键去访问值,就会产生错误。

#创建字典
geek={"404":"page not found",
"uninstalled":"being fired"}
#通过键获取值
print(geek["404"])
print(geek['cs'])
输出:



2. 在获取值之前先用in运算符进行测试

由于不存在的键会引发错误,因此在获取键值之前,先判断这个键是否存在。in运算符就可用于判断键的存在性。

#创建字典
geek={"404":"page not found",
"uninstalled":"being fired"}
#通过键获取值
print(geek["404"])
if "cs" in geek:
print(geek['cs'])
else:
print("I have no idea.")
输出:



注意:in运算符只能判断键的存在性,不能用这种办法去判断值得存在性。

3. 通过get()方法获取值

字典方法get(),该方法提供有一个内建的安全机制用以处理“通过不存在的键获取值”的情况。如果键不存在,该方法就会返回一个默认值。如果不提供默认值的话,就会得到None。

#创建字典
geek={"404":"page not found",
"uninstalled":"being fired"}
#通过get()方法获取值
print(geek.get("cs","I have no ides"))
print(geek.get("cs"))
输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: