Python:字典

列表、字符串字典是Python中最重要的3种数据类型,字典不仅支持整数索引,还支持其他类型的键(如字符串、元组等)索引。

当一系列只组合成数据结构,并通过编号来访问各个值时,用列表很管用。因为列表里索引位置按顺序排列,以编号为索引,像0,1,2...

字典通过名称来访问各个值的数据结构,其中的值不按顺序排列,而是储存在下,键可能是数、字符串或原则

name=["A","B","C"]       # 创建列表name
number=["12","23","34"]  # 为了建立小型数据库,存放姓名和号码.  创建列表number
number[name.index("B")]  # 建立的是列表时,怎么查找某人的号码,就是这样输入
Out[35]: '23'            #能行,但是麻烦

上述问题用字典来解决更容易,也简便

1、创建字典

number={"A":"12","B":"23","C":"34"} #字典以这种方式表示
number["B"]

字典由组成,这种键-值称为,上键中键为名字,是独一无二的,如“A”,“B”等;值为号码,无需独一无二,如“12”,“23”等。

每个键和值之间用冒号隔开,项之间用逗号隔开,整个字典放在花括号内。{}表示空字典。

用dict函数创建字典

item=[("name","liujun"),("age",42)]
a=dict(item)
a
Out[40]: {'age': 42, 'name': 'liujun'} # dict()创建函数

a['name']
Out[41]: 'liujun'  #查阅字典

还可以用关键字调用dict函数 ,这是常用 用法

a=dict(name='lijun',age=42)
a
Out[42]: {'age': 42, 'name': 'lijun'}

2、对字典的操作

有len()、d[k]、d[k]=v、del d[k]和k in d等操作

扫描二维码关注公众号,回复: 3055820 查看本文章
a=dict(name='lijun',age=42)
len(a)
Out[2]: 2  #len返回字典中包含的项数

a["name"]
Out[3]: 'lijun' #返回与键“name”相关联的值

a["name"]='duxiaoxue'
a 
Out[6]: {'age': 42, 'name': 'duxiaoxue'}  #将值“duxiaoxue”关联到键“name”

del a["name"]
a
Out[8]: {'age': 42}  # 删除键为“name”的项

a=dict(name='lijun',age=42)
"name" in a
Out[11]: True  # name in a表示字典a是否包含键为name的项

注意:

即使字典中原来没有键(是个空字典),也可以赋值,会自动在字典中创建新项;但是对于列表,若不用append等方法,不能给没有的元素赋值。

字典表达式中k in d(d为字典)查找的是键而不是值;而v in L(L为列表)查找的是值,而不是索引。

a=[]
a[3]="lijuns"
IndexError: list assignment index out of range #列表不可给不存在的位置赋值

a={}
a[3]="lijuns"
a
Out[13]: {3: 'lijuns'}   #字典可给不存在的位置赋值

一个数据库的例子:

people={"Alice":{"phone":"1234","addr":"龙虎街道"},"Beth":{"phone":"9102","addr":"河北街道"}}
# people包含两个字典:第一是将人名用作键的字典;第二是每个人都用字典表示。
lable={"phone":"phone number","addr":"address"}
# 电话号码和地址的描述性标签,在打印输出时使用这个标签
name=input("name")
request=input("phone number(p) or address(a)?")
# 问 要查询电话还是地址?
if request=="p":key="phone"
if request=="a":key="addr"
# 
if name in people:print("{}'s {} is {}.".format(name,lable[key],people[name][key]))
# 近当名字在字典里包含的键时才打印信息

nameBeth
phone number(p) or address(a)?a
Beth's address is 河北街道.

猜你喜欢

转载自blog.csdn.net/Hellolijunshy/article/details/82261425
今日推荐