字典数据类型

利用键访问对应值

像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用很多不同数据类型,不只是整数。

  • 键:字典的索引被称为“键”
  • 键-值对:键及其相关联的值称为“键-值”对

字典长下面这个样子↓

myCat={'size'='fat','color'='gray','disposition'='loud'}
  • 这是将一个字典变量赋给myCat变量
  • 字典的键是’size’、’color’和’disposition’
  • 这些键对应的值为’fat’、’gray’和’loud’

可以通过键访问对应的值↓(就像通过下标访问列表对应的值)

1
2
myCat={'size'='fat','color'='gray','disposition'='loud'}
print(myCat[size])

fat

无法切片

字典的表项是不排序的,所以不能像列表那样切片

in操作符

可以使用in操作符判断前面输入的字符串是否作为键存在于字典中

1
2
birthday={'Alice':'April 4','Bob':'Dec 12'}
print('Alice' in birthday)

True

字典使用

有三个字典方法

keys()、values()和items()方法

1.keys()返回字典键

t=字典名.keys()

2.values()返回字典值

v=字典名.values()

3.items()返回字典键-值对

i=字典名.items()

与for循环的结合迭代

1
2
3
spam={'color':'red','age':42}
for k in spam.keys():
print(k)

与in、not in 操作符结合
检查某个键和值是否在字典中

1
2
spam={'name':'SYolin','gender':'male'}
print('name' in spam.keys())

True

get()方法访问字典中的键

get()方法有两个参数:

字典名.get(要取的键,若键不存在返回的备用值)

有效避免了在取得字典中的键或值之前,还需检查检查是否存在的步骤

setdefault()方法

当需要为字典中的某个键设置一个默认值,当该键没有任何值时使用它

就像达到以下的效果

1
2
3
spam={'name':'Pooka','age':5}
if 'color' not in spam:
spam['color']='black

setdefault()提供了一种方式,在一行中完成这件事,需要传递两个参数

1.第一个参数是要检查的键

2、第二个参数是,如果该键不存在时要设置的值。如果该键存在,第二个参数不会被使用

字典名.setdefault(检查的键,不存在时设置的值)

对上面的代码进行改进↓

1
2
3
spam={'name':'Pooka','age':5}
spam.setdefault('color','black')
print(spam['color'])
black

setdefault()方法是一个很好地快捷方式,可以确保一个键的存在。

漂亮打印

导入pprint模块,就可以使用pprint()和pformat()函数
可以以键-值对成行“漂亮”打印一个字典值

  • pprint():打印到屏幕上
  • pformat():得到漂亮文本的字符串,而不是打印到屏幕上

使用↓

pprint.pprint(字典名)          # 打印到屏幕上
pprint.pformat(字典名)         # 得到字符串
print(pprint.pformat(字典名))  # 和第一行代码等价

利用字典统计句子每个字符个数

1
2
3
4
5
6
7
import pprint
message='It was a bright cold day in April, and the clocks were strking thirteen.'
count={}
for character in message:
count.setdefault(character,0)
count[character]+=1
pprint.pprint(count)

如果是取得某个字符的个数

1
2
3
4
5
6
7
8
9
import pprint
message='It was a bright cold day in April, and the clocks were strking thirteen.'
target=input()
count={target:0}
for character in message:
if character in count: # 直接用in操作符检查输入的名字是否作键存在于字典中
count[target]+=1
pprint.pprint(count)