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等操作

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 河北街道.

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值