字典

字典

字典存在意义:

1.假设有一个列表

li=[‘Pyth’,‘Java’,‘C’]

li[0]=‘Python’

li.sort()

2.假设统计学生信息,包括学号姓名,年龄

li=[[20190101,‘Tom’,18],

​ [20190201,‘Jack’,19],

​ …

​ [20190n01,‘Riku’,18]]

循环遍历,十分复杂

  • 字典是列表以外Python中使用最灵活的内置数据类型

特点:

  • key:value ,键值之间用冒号(:)连接

  • key:value 组成字典的一个元素

  • 键值对之间用逗号(,)隔开

  • 整个字典用{}包裹

  • 可变数据类型

  • 无序

与列表的区别:

  • 列表有序,字典无序

  • 列表可以通过索引(偏移)访问元素,字典通过键(key)访问元素

字典的基本格式:

dic = {key1:value1,key2:value2,...,keyn:valuen}
  • 值可以取任意数据类型,但键不可以,必须为不可变数据类型,即key必须可哈希。
  • 可哈希 —>不可变
  • 不可哈希 —>可变

字典的创建

空字典的创建

dic = {}
print(type(dic))
#输出
<class 'dict'>

创建多元素字典

  • 直接创建
dic = {'id': 123456, 'name': 'Tome', 'age': 18}
print(dic)
print(type(dic))
#输出
{'id': 123456, 'name': 'Tome', 'age': 18}
<class 'dict'>
  • 强制转换
key = ('id', 'name', 'age')
value = (123456, 'Tom', 18)
dic = dict(zip(key, value))
print(dic, type(dic))
#输出
{'id': 123456, 'name': 'Tom', 'age': 18} <class 'dict'>
  • 通过字典的fromkeys方法创建字典

    • 格式
dict.fromkeys(seq,val=None)
  • 以seq中的元素作为该字典的键
  • val的值作为该字典中所有键对应的初始值,如不提供,默认为None
dic = dict.fromkeys('Hello')
print(dic)
dic1 = dict.fromkeys('pwd',123456)
print(dic1)
#输出
{'H': None, 'e': None, 'l': None, 'o': None}
{'p': 123456, 'w': 123456, 'd': 123456}

字典的常见操作

  • 直接添加键值对(dic[key] = value)
    • 通过使用变量名[‘键’]=‘值’,如果key不存在,新建键值对(key:value)
    • 如果存在就更新值(value)
dic={}
dic['id'] = '007'
print(dic)
dic['id'] = '008'
print(dic)
#输出
{'id': '007'}
{'id': '008'}
  • 通过dict1.update(dic)更新键值对
    • 将dic字典中的键值对添加到dict1中,如果有相同的键,则更新键的值。
dic={'a':1,'b':2,'c':3}
dic1={'d':4,'e':5,'f':6,'a':10}
dic.update(dic1)
print(dic)
#输出
{'a': 10, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}

  • 通过dict.pop根据键值删除键值对
    • 格式:dict.pop(key[,default])
      • 如果key存在于dict中,删除并返回dict[key]
      • 如果不存在,给出默认值则返回默认值,未给出默认值则报错
dic={'a':1}
dic.pop('a')
print(dic)
#输出
{}
  • 通过popitem方法删除键值对,随机删除一个键值对,其实等于删除可视的最后一个键值对
    • 返回值为元组
dic={'a':1,'b':2,'c':3}
print(dic.popitem())
print(type(dic.popitem()))
print(dic)
#输出
('c', 3)
<class 'tuple'>
{'a': 1}
  • del dict[key]
dic={'a':1,'b':2,'c':3}
del dic['a']
print(dic)
#输出
{'b': 2, 'c': 3}
  • dict.clear()
    • 返回值为None
dic={'a':1,'b':2,'c':3}
dic.clear()
print(dic)
#输出
{}

  • 直接通过键值对(dic[key] = value)进行修改
dic={}
dic['id'] = '007'
print(dic)
dic['id'] = '008'
print(dic)
#输出
{'id': '007'}
{'id': '008'}
  • dict.setdefault()
    • 键存在,不改动,返回字典中的值
    • 不存在,在字典中添加相应的键值对,并返回对应的值
dic = {'id': 20190101, 'name': 'Tom', 'age': 22}
print(dic.setdefault('name', 'Jack'))
print(dic)
print(dic.setdefault('name1', 'Jack'))
print(dic)
#输出
Tom
{'id': 20190101, 'name': 'Tom', 'age': 22}
Jack
{'id': 20190101, 'name': 'Tom', 'age': 22, 'name1': 'Jack'}

  • 根据键值key查询
    • 不存在则报错
dic = {'id': 20190101, 'name': 'Tom', 'age': 22}
print(dic['id'])
#输出
20190101
  • dict.get()
    • 存在则返回值,不存在则返回None,不会报错。
    • 用于需要查询且不确定是否含有相应的键值对的情况,不会抛出异常。
dic = {'id': 20190101, 'name': 'Tom', 'age': 22}
print(dic.get('id'))
print(dic.get('address'))
#输出
20190101
None

遍历

  • 通过键遍历

  • 通过值遍历

  • 通过键值对遍历

dic = {'id': 20190101, 'name': 'Tom', 'age': 22}
for i in dic.keys():
    print(i,end=' ' )
print('')
for i in dic.values():
    print(i,end=' ')
print('')
for i in  dic.items():
    print(i,end=' ')
#输出
id name age 
20190101 Tom 22 
('id', 20190101) ('name', 'Tom') ('age', 22) 
  • 练习
    • 一个列表将大于60和小于60的元素添加进一个字典种
li = [23, 34, 45, 22, 67, 123, 412, 432, 5, 5, 6, 12, 4, 5, 6, 1]
dic={'>60':[],'<60':[]}
for i in li:
    if i >60:
        dic['>60'].append(i)
    else:
        dic['<60'].append(i)
print(dic)
#输出
{'>60': [67, 123, 412, 432], '<60': [23, 34, 45, 22, 5, 5, 6, 12, 4, 5, 6, 1]}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值