赞
踩
1.字典中下标几乎可以是任意类型
2.字典的下标称为键 。 每个键都与一个值关联。
键值对(有时候也称一项(item)):键值之间的关联
字典体现了键到值上的映射
1.dict函数新建一个不含任何项的字典
添加新项
d['one'] = 'two'
如果我们打印这个字典,可以看到一个键值对,以冒号分隔:
>>> s
{'one':'two'}
2.字典中各项的顺序是不可预料的 即打印相同的字典得到字典中项的排序可能会不同
3.len函数
能够返回键值对的数量
>>> end = {'one':1,'two':2,'three':3}
>>> len(end)
3
in操作符可以判断是不是字典中的键(值判断不了)
>>> 'one' in end
True
当然,也可以判断值。可以用values方法,它会返回一个值集合,再用in操作符
>>> vals = end.values()
>>> 1 in vals
>>> True
现在给你一个问题,给定字符串,怎么计算每个字母出现的次数,用字典实现。
我们可以选择直方图(这是一个函数名称),它是一个统计学术语,表示一个计数器。
def histogram(str):
d = dict()
for c in str:
if c not in d:
d[c] = 1
else:
d[c] += 1
return d
例如:
>>> h = histogram('brnedaawxa')
>>> h
{'b': 1, 'r': 1, 'n': 1, 'e': 1, 'd': 1, 'a': 3, 'w': 1,'x': 1}
还有一个get函数 接受一个键以及一个默认值。如果键出现在字典中,get返回对应的值;否则它返回默认值。
>>> s = histogram('b')
>>> s
{'b': 1}
>>> s.get('b',0)
1
>>> s.get('a',0)
0
反向查找,通过值找到键
def reverse_lookup(d, v):
for k in d:
if d[k] == v:
return k
raise LookupError()
上面的函数是以字典名和值做参数
注:raise语句会生成一个异常 LookupError 是一个内置异常,来表示查找操作失败。
反转字典 即 键-值 新键(值)-新值(键)
def invert_dict(d):
inverse = dict()
for key in d:
val = d[key]
if val not in inverse:
inverse[val] = [key]
else:
inverse[val].append(key)
return inverse
这是把键存到了列表里
例如:
histogram为上述的直方图函数
>>> h = histogram('parrot')
>>> h
{'a': 1, 'p': 1, 'r': 2, 't': 1, 'o': 1}
>>> inverse = invert_dict(h)
>>> inverse
{1: ['a', 'p', 't', 'o'], 2: ['r']}
注:列表可以用作字典的值,但不能用作字典的键
因为字典的键必须是可散列的(hashable)
字典本身也是可用作值,不用于键
将之前计算的值保存以便后面使用的方法
常见的例子就是斐波那契数列fibonacci
known = {0:0, 1:1}
def fibonacci(n):
if n in konwn:
return known[n]
res = fibonacci(n-1) + fibonacci(n-2)
known[n] = res
return res
这是字典的作用之一
__main__
之中的变量称为全局变量 全局变量常常用作标志:它是一种布尔变量,可以标志一个条件是否为真
ver = True
def example():
if ver:
print('Yes')
第二个重要的是,
当你在尝试给全局变量重新赋值,但是你发现值没有改变
例如
been = False
def example2():
been = True #错
其原因就是函数example2会新建一个局部变量been。局部变量在函数结束时就会消失,并且对全局变量没有任何影响。
但是,
如果你想要在函数中对全局变量重新赋值,你要先声明这个变量
即用global语句
def example2():
global been
been = True
告诉函数example2不要新建局部变量,我想指的是全局变量
所以,想要修改全局变量就要先在函数中声明它
下面的函数均是字典名.函数
1.keys():查找字典中所有的键,返回可迭代的对象
即返回的是dict.key([ ])里面是列表
d = {'a': 1, 'b': 2, 'c': 3}
print(list(d.keys()))
直接转换成列表输出即可
2.values():查找字典中所有的值,…(合上述相同)
3 .items():查找字典中所有的键值对,返回一个含有元组的列表,元组里面有两项,一个键,一个值
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> print(d.items())
dict_items([('a', 1), ('b', 2), ('c', 3)])
4.**dict.clear()**清空函数,清空字典。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。