day04_字典

字典

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

字典是一种可变的数据类型。

和列表的区别:

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

字典是基本格式

dict={key1:value1,key2:value2,...,keyn:valuen}

值可以取任意数据类型,但键不可以,必须为不可变数据类型

可哈希——不可变

不可哈希——可以变

特点:

  • 1.key:value 键值之间用冒号链接
  • 2.key:value 键值组成字典的一个元素
  • 3.键值 用逗号隔开

强转

key=("name",'id','age')
value=("Jack",'23123',12)
zip()
tp=tuple(zip(key,value))
print(tp,type(tp))
#(('name', 'Jack'), ('id', '23123'), ('age', 12)) <class 'tuple'>

通过字典的fromkeys方法创建字典

格式:

d i c t . f o r m k e y s ( s e q , v a l = N o n e ) ​ dict.formkeys(seq,val=None)​ dict.formkeys(seq,val=None)

  • 创建并返回一个字典

dic=dict.fromkeys(['Jack',"Tom",'Mary'],)
print(dic)
#{'Jack': None, 'Tom': None, 'Mary': None}

字典的常见操作

  • 直接添加键值对(dic[key]=value)
    • 通过使用 变量名[‘键’]=‘值’
      • 如果key不存在,新建键值对(key:value)
      • 如果存在,则更新值
dic={}
dic['id']=231231
dic['name']='Jack'
dic['age']=18
print(dic)
#{'id': 231231, 'name': 'Jack', 'age': 18}

创建字典

# dic={}
# while True:
#     a=input("是否添加(请输入Y or N):")
#     if a.lower()=="y":
#         dic_key=input('输入键:')
#         dic[dic_key]=input("输入值:")
#     elif a.lower()=="n":
#         break
# print(dic)

是否添加(请输入Y or N):y
输入键:a
输入值:ada
是否添加(请输入Y or N):a
是否添加(请输入Y or N):y
输入键:as
输入值:aad
是否添加(请输入Y or N):n
{‘a’: ‘ada’, ‘as’: ‘aad’}

# li=[]
# while True:
#     dic={}
#     a=input("是否添加(请输入Y or N):")
#     if a.lower()=="y":
#         id=int(input('id: \t'))
#         name=input('name:\t')
#         age=int(input('age:\t'))
#         dic['id']=id
#         dic['name']=name
#         dic['age']=age
#         li.append(dic)
#     elif a.lower()=="n":
#         break

是否添加(请输入Y or N):y
id: 123123
name: jack
age: 34
是否添加(请输入Y or N):a
是否添加(请输入Y or N):Y
id: 1231
name: mart
age: 14
是否添加(请输入Y or N):n
[{‘id’: 123123, ‘name’: ‘jack’, ‘age’: 34}, {‘id’: 1231, ‘name’: ‘mart’, ‘age’: 14}]

  • dict.update(dic)

    把字典dic1中的键值对(key:value)更新到dict中

    • 俩个字典的键完全不同,则将dic1的键全部添加至dic2中
    • 存在相同键,则更新dic2中对应的值
dic1={'name':'dad','address':'hangzhou'}
dic2={'name':'Tom','age':18}
dic2.update(dic1)
print(dic2)
#{'name': 'dad', 'age': 18, 'address': 'hangzhou'}

  • dict.pop()
    • 格式:dict.pop(key,[default])
      • 如果key存在于dict中,删除并返回dict[key]
      • 如果不存在,给出默认值则返回默认值,未给出默认值,报错
dict1={'id':12312,'name':'Tom','age':18}
print(dict1.pop('age',17))
print(dict1.pop('id'))
print(dict1)

18
12312
{‘name’: ‘Tom’}

  • dict.popitem()

    • 随机删除一对键值对

    • 有返回值的,元组

dict={'id':12312,'name':'Tom','age':18}
print(dict.popitem())
key,value=dict.popitem()
print(dict)
print(key,value)

(‘age’, 18)
{‘id’: 12312}
name Tom

  • del dict[key]
  • del dict
  • dict.clear()
dict={'id':12312,'name':'Tom','age':18}
#del dict['id']#剩下{'name': 'Tom', 'age': 18}
print(dict.clear())#None
print(dict)

  • 直接修改 dic[key]=
  • dict.setdefault
    • 键存在,不改动,返回字典中的值
    • 不存在,在字典中添加相对应的键值对,并返回对应的值
dict={'id':12312,'name':'Tom','age':18}
# dict['id']=123  #{'id': 123, 'name': 'Tom', 'age': 18}
print(dict.setdefault('name','jack'))
print(dict.setdefault('asda',1234))
print(dict)

Tom
1234
{‘id’: 12312, ‘name’: ‘Tom’, ‘age’: 18, ‘asda’: 1234}

  • 字典值的访问
    • 直接通过字典的key访问value
dict={'id':12312,'name':'Tom','age':18}
print(dict['id']) #存在返回对应的值
print(dict['s'])#不存在,直接报错
  • dict.get()访问value
    • 语法格式 dict.get(key[,default])
    • 不确定字典中是否存在某个键又想对其进行操作,比如获取值—>get方法
    • 当key不存在的时候,不会抛出异常,返回None
dict={'id':12312,'name':'Tom','age':18}
print(dict.get('id',123))
print(dict.get('asd'))
print(dict)

12312
None
{‘id’: 12312, ‘name’: ‘Tom’, ‘age’: 18}

遍历

  • dict.keys()
  • dict.values()
  • dict.items()
dict={'id':12312,'name':'Tom','age':18}
for kry in dict.keys():
    print(kry)
for value in dict.values():
    print(value)
for item in dict.items():
    print(item)
for key,value in dict.items():
    print(key,':',value)

id
name
age
12312
Tom
18
(‘id’, 12312)
(‘name’, ‘Tom’)
(‘age’, 18)
id : 12312
name : Tom
age : 18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值