python学习笔记(07)---(内置容器-字典)

第七章  内置容器(三)

4.字典

(1)概念:字典属于可变序列,使用“键 : 值”(key-value)的方式配对存储数据,类似拼音-汉字的映射关系

(2)格式:dictname={key1:value1,key2:value2,……keyn:valuen}

  • dictname:字典名
  • key:元素的键
  • value:元素各个键所对应的值,可以为任意数据,可不唯一

(3)字典创建示例

d1 = {'andy': 1001, 'fox': 1002, 'lie': 1003}
print(d1)
# {'andy': 1001, 'fox': 1002, 'lie': 1003}
d2 = {}  # 空字典
d3 = dict()  # 使用dict()方法创建空字典
name = {'惊春', '芒夏', '露秋', '雪冬'}
sign = {'双鱼座', '金牛座', '狮子座', '射手座'}
# 使用zip()函数将列表或元组对应的元素组合成字典
d4 = dict(zip(name, sign))
print(d4)
# {'露秋': '狮子座', '雪冬': '金牛座', '芒夏': '双鱼座', '惊春': '射手座'}
# 使用 键=值 的方式创建
d5 = dict(a=12, b=34, c=56)
print(d5)
# {'a': 12, 'b': 34, 'c': 56}

(4)增加字典元素:

<1> 格式:dictname[键]=值

<2> 例:

d1 = {'西瓜': 5, '橙子': 8, '橘子': 10}
d1['西瓜'] = 1.5
d1['橘子'] = 12
print(d1)  # {'西瓜': 1.5, '橙子': 8, '橘子': 12}

(5)删除字典

<1> del 字典名[键]:删除字典中特定元素

<2> dictname.clear():清空字典全部元素

<3> del 字典名:删除字典整体

d1 = {'西瓜': 5, '橙子': 8, '橘子': 10}
del d1['西瓜']
print(d1)  # {'橙子': 8, '橘子': 10}
d1.clear()
print(d1)  # {}
del d1

(6)字典的访问:dictname[键]

d1 = {'西瓜': 5, '橙子': 8, '橘子': 10}
print(d1['橘子'])  # 10

(7)字典的复制

<1> 作用:保护源字典的内容

<2> 格式:new_dictname=dictname.copy()

PS:默认为深拷贝,新字典地址独立

d1 = {'西瓜': 5, '橙子': 8, '橘子': 10}
d2 = d1.copy()
print(d1, '\n', d2)
# {'西瓜': 5, '橙子': 8, '橘子': 10}
#  {'西瓜': 5, '橙子': 8, '橘子': 10}
print(id(d1), id(d2))  # 1482992340352 1482992340544

(8)使用get()方法,获取指定键值

<1> 格式:dictname.get(key,default)

  • key:指定的键
  • default:用于指定键不存在时,返回默认值。可省略,若省略则返回None
d1 = {'name': 'andy', 'age': 17, 'class': 'first'}
print(d1.get('age'))  # 17
print(d1.get('sex'))  # None
print(d1.get('sex', '无此选项'))  # 指定键不存在,指定默认值时,返回默认值
# 若访问的键不存在,执行default

(9)字典的遍历:

<1> 格式:遍历值,item()方法

for  i  in dictname.items():

         处理i

<2> 格式2:键:值遍历

for key,value in dictname.items():

         处理key和value

name = {'惊春', '芒夏', '露秋', '雪冬'}
sign = {'双鱼座', '金牛座', '狮子座', '射手座'}
d1 = dict(zip(name, sign))
for i in d1.items():
    print(i)
for i, j in d1.items():
    print(i, '的星座是', j)
# ('露秋', '狮子座') ....
# 露秋 的星座是 狮子座 ....

<3> 格式3:遍历字典的键,keys()

for  key dictname.keys():

         处理

p = {'张三': 67, '张三疯': 78, '罗律师': 89}
for name in p.keys():
    print('姓名:', name)  # 姓名: 张三......

<4> 示例:

PS:不允许同一个键出现两次,创建时如果同一个键被赋值两次,前一个没赋上,后一个会被记住

d1 = {'num': 1001, 'sum': 1002, 'num': 1003}
print(d1)  # {'num': 1003, 'sum': 1002}

PS:键必须不可变,所以使用数字、字符串、元组来充当,列表不行

d1 = {'sum': 1002, ['num']: 1003}
print(d1)  # 报错。键不能为列表

(10)字典内含列表:

列表储存在字典中,一般作为字典的某个键的值出现,需要使用循环嵌套循环完成处理。外层循环用于取得字典的键,内层循环用于取得值或将列表拆解

sp = {'andy': ['篮球', '足球', '橄榄球'], 'sunny': ['体操', '游泳', ], 'xiaoming': ['羽毛球', '乒乓球']}
for name, na_sp in sp.items():
    print('%s喜欢的运动是:' % name, end=' ')
    for sport in na_sp:
        print(' ', sport, end=' ')
    print()  # andy喜欢的运动是:   篮球   足球   橄榄球 ...

(11)字典内含字典

字典存储在字典中,一般用于表示字典中键的值

wechat = {'001': {'lastname': '张三', 'firstname': '张三疯', 'city': '西安'},
          '002': {'lastname': '李四', 'firstname': '李四疯', 'city': '成都'}}
for num, name in wechat.items():
    print('账号:', num, end=' ')
    print('姓名:', name['firstname'], end=' ')
    print('住址:', name['city'])
# 账号: 001 姓名: 张三疯 住址: 西安
# 账号: 002 姓名: 李四疯 住址: 成都
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值