python--字典

目录

  1. 字典的使用
  2. 创建字典和使用字典
    2.1 dict函数
    2.2 基本字典操作
    2.3 字典的格式化字符串
    2.4 字典的方法
    1. 总结

字典是python中唯一内建的映射类型。字典的值并没有特殊的顺序,但是都是存储在特定的key中。键可以是数字,字符串甚至数组。

1 列表的使用

>>> names=['Alice','Hellen','James','Bob']
>>> numbers=['130584','457113','742348','535212']
>>> numbers[names.index('James')]
'742348'

这样很快就能查到学号了。

2.创建使用字典
创建字典
“`
phonebook={‘Alice’:’130584’,’Hellen’:’457113’,’James’:’742348’,’Bob’:’535212’}

2.1 dict函数使用

(1)创建字典的第一种方式

items=[(‘name’,’WangYu’),(‘age’,’13’)]
d=dict(items)
d
{‘age’: ‘13’, ‘name’: ‘WangYu’}
d[‘name’]
‘WangYu’

(2)第二种方式

d=dict(name=’WangYu’,age=12)
d
{‘age’: 12, ‘name’: ‘WangYu’}

2.2 字典的基本操作



 - len(d) 返回d中项(键-值)的数量
 - d[k]返回关联到k项上的值
 - d[k]=v 将值v关联到键k上
 - del d[k]删除键为k的项
 - k in d 检查d中是否含有键为k的项

len(d)
2

d[‘age’]=43
d
{‘age’: 43, ‘name’: ‘WangYu’}
d[‘name’]=’Venlen’
d
{‘age’: 43, ‘name’: ‘Venlen’}

del d[‘name’]
d
{‘age’: 43}

‘age’ in d
True
43 in d
False

字典与列表的区别:

 1. 键类型:字典的键不一定为整型数据,键可以变换成任意的不可变类型,浮点型,元祖或字符串都可以。
 2. 自动添加类型:即使键期初在字典中不存在,也可为它赋值,字典就会建立新的项。在(不使用append方法或者其他操作的情况下)不能将值关联到列表范围之外的索引上。
 3. 成员资格型:表达式 k in d 查找 的是键,不是值(上面已演示过了)。表达式 v in l (列表)查找的是值不是键。在字典中检查键是成员资格比在列表中查值的成员资格高效,数据规模越大,两者的效率越明显。

键可以是任意不可改变的数据类型

x=[]
x[42]=’Linux’

Traceback (most recent call last):
File “

```
>>> y={}
>>> y[42]='UNIX'
>>> y
{42: 'UNIX'}

小案例 mini数据库

--以人名作为字典键,每个人用另外一个字典来表示--

people={
‘Alice’:{
‘Addr’:’Nanjing Road 123’,
‘Phone’:’1212144’
},
‘David’:{
‘Addr’:’ Tomas Road 413’,
‘Phone’:’7114502’
},

'Bob':{
        'Addr':'Sandforws Road 172',
        'Phone':'15352781'
        }

}

针对电话和地址做标签
labels={
‘Phone’:’Phone Number’,
‘Addr’:’Address’

}
输入人名和要查询的信息
name=raw_input(‘Name:’)
request=raw_input(‘Phone number(p) or Address(s)?’)
对请求作出判断
if request==’p’:
key=’phone’
if request=’a’:
key=’Addr’
格式化输出信息
if name in people:
print ‘%s’s %s is %s .’% \
(name,lables[key],people[name][key])

2.3 字典的格式化字符串

‘Ben\’s phone number is %(Ben)s’ %phonebook
“Ben’s phone number is 1920”

在每个转换说明符中的%字符后面,可以加上键%(key)s,后面再加上其他说明元素。

2.3 字典使用方法

  1. clear 清除字典中所有项,没有返回值

d=[]
d={}
d[‘name’]=’ket’
d[‘age’]=’12’
d
{‘age’: ‘12’, ‘name’: ‘ket’}
return_value=d.clear()
d
{}
return_value
print return_value
None
比较下clear的作用
x={}
y=x
x[‘key’]=’admin’
x
{‘key’: ‘admin’}
y
{‘key’: ‘admin’}
x={}
y
{‘key’: ‘admin’}

第二种采用clear()方法

x={}
y=x
x[‘key’]=’123’
y
{‘key’: ‘123’}
x.clear()
y
{}

当使用三个字典时,x,y使用z字典,添加会影响z字典,但是clear()和空都对z字典没有影响,y也不受影响。

2.copy
分为两种,copy和deepcopy。copy是返回一个相同键值的字典,当替换某个键值的时候对原始字典没有影响,但是当修改某个值,原始字典就会受到影响。deepcopy是复制一个字典副本成为原始字典,修改原始的字典不受影响。

3.fromkeys
fromkeys方法使用给定键建立新的字典,每个键对应一个默认的值None.

{}.fromkeys(‘name’,’age’)
{‘a’: ‘age’, ‘e’: ‘age’, ‘m’: ‘age’, ‘n’: ‘age’}
{}.fromkeys([‘name’,’age’])
{‘age’: None, ‘name’: None}

赋值

{}.fromkeys([‘name’,’age’],’(unknown,234)’)
{‘age’: ‘(unknown,234)’, ‘name’: ‘(unknown,234)’}
{}.fromkeys([‘name’,’age’],[‘(unknown)’,’(sdf)’])
{‘age’: [‘(unknown)’, ‘(sdf)’], ‘name’: [‘(unknown)’, ‘(sdf)’]}
{}.fromkeys([‘name’,’age’],’(unknown)’)
{‘age’: ‘(unknown)’, ‘name’: ‘(unknown)’}

4 get
访问字典,查看此键是否存在

d={}
print d.get(‘name’)
None
print d[‘name’]

Traceback (most recent call last):
File “

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值