python学习(七)字典学习

 

 

 

#!/usr/bin/python


# 字典
# 当时学java的时候, 语言基础就学了很久, 而后是各类API, 最后才是集合

# 键值对, 可变

# 1. 映射操做

D = {'food' : 'Spam', 'quantity':4, 'color':'pink'}

print(D['food'])                # 经过键来获取值

D['quantity'] += 1              # 改变键对应的值


# 另外一种构造字典的方法
D = {}
D['name'] = 'Bob'
D['job'] = 'dev'
D['age'] = 40

# 在Python经过字典编写的搜索方法很快

# 重访嵌套
rec = {'name': {'first':'Bob', 'last':'Smith'},
       'job':['dev', 'mgr'],
       'age':40.5}

rec['name']

rec['name']['last']
rec['job']
rec['job'][-1]                  # 'job'键对应的列表的最后一个值

rec['job'].append('janitor')

# 所创建的这些对象都不须要手动释放, 有Python的自动垃圾收集


# 2. 键的排序: for循环
# 字典仅支持经过键获取元素, 并且有时候仍是无需的
# 如锅要对字典进行排序, 先获取键的列表, 而后使用sort方法进行排序
# 最后使用for循环逐个显示结果
Ks = list(D.keys())             # 无需列表
Ks.sort()                       # 对key进行排序

for key in Ks:
    print(key, '=>', D[key])

for c in 'spam':
    print(c.upper())

x = 4
while x > 0:
    print('spam!' * x)
    x -= 1

# 迭代和优化


squares = [ x ** 2 for x in [1, 2, 3, 4, 5]]
print(squares)

squares = []
for x in [1, 2, 3, 4, 5]:
    squares.append(x ** 2)

# 列表解析和相关的函数编程工具, 如map和filter, 一般运行得比for循环快
# 首先为了简单和可读性去编写代码, 在程序能够工做, 并证明确实有必要考虑性能以后, 再考虑该问题
# 关于这个python提供了time以及timeit和profile模块


# 不存在的键: if 测试

D = { 'a' : 1, 'c' : 3, 'b' : 2}

D['e'] = 99

# D['f'] 键'f'不存在, 这样使用会报错的
# in关系表达式容许咱们查询字典中一个键是否存在

if not 'f' in D:
    print('missing key f in D')

value = D.get('x', 0)           # 获取键'x'的值, 若是没有获取到那么就是0付给value
    
    
D[None] = 4                     # None也能够做为键耶
print(D)
相关文章
相关标签/搜索