Python—字典dict的基础知识

字典

在列表的实际运用中

在别人修改过的列表中进行更改,但自身不知情的情况下会有错误或需要知道很多列表中的元素时会很复杂,这时需要考虑应用字典。

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

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

和列表的区别:

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

字典的基本格式:

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

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

可哈希—>不可变

不可哈希—>可变

demo:

info={"id":2000,'name':'Tom','age':18}
# key,value--->键值对
print(info)

{'id': 2000, 'name': 'Tom', 'age': 18}

特点:

  • key:value 键值对之间用冒号(:)连接
  • key:value 组成字典的一个元素
  • 键值对之间用逗号隔开
  • 整个字典用花括号{}包裹

字典的创建

空字典

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

多元素字典

info={"id":2000,'name':'Tom','age':18}

dic=dict(id=0000,name='Tom',age=18)
print(dic)

{'id': 0, 'name': 'Tom', 'age': 18}

强转

zip()
key=('id','name','age')
value=(000,'tom',18)
tp=tuple(zip(key,value))
print(tp,type(tp))
# tp=list(zip(key,value))
# tp=dict(zip(key,value))

(('id', 0), ('name', 'tom'), ('age', 18)) <class 'tuple'>
[('id', 0), ('name', 'tom'), ('age', 18)] <class 'list'>
{'id': 0, 'name': 'tom', 'age': 18} <class 'dict'>

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

格式:

dict.fromkeys(seq,val=None)
  • 创建并返回一个字典
    • 以seq中的元素作为该字典的键
    • val的值作为该字典中所有键对应的初始值:如不提供,默认为None
dic=dict.fromkeys("asd",6666)
print(dic)

{'a': 6666, 's': 6666, 'd': 6666}

dic=dict.fromkeys(['tom','aa','sss'],6666)
print(dic)

{'tom': 6666, 'aa': 6666, 'sss': 6666}

字典的常见操作

  • 直接添加键值对(dic[key]=value)

    • 通过使用变量名[“键”]=‘值’
      • 如果key不存在,新建键值对(key:value)
      • 如果存在,则更新值(value)
    dic={}
    dic['id']=0000
    dic['name']='tom'
    dic['age']=18
    print(dic)
    
    {'id': 0, 'name': 'tom', 'age': 18}
    

demo:

li=[]
while 1:
    dic = {}
    value=int(input("输入id的值:"))
    value1 = input("输入name的值:")
    value2 = int(input("输入age的值:"))
    dic['id']=value
    dic['name'] = value1
    dic['age'] = value2
    li.append(dic)
    flag=input("Continue?(y/n)")
    if flag.lower()=='n':
        break
print(li)
    
输入id的值:1
输入name的值:1
输入age的值:1
Continue?(y/n)y
输入id的值:2
输入name的值:2
输入age的值:2
Continue?(y/n)y
输入id的值:1
输入name的值:1
输入age的值:1
Continue?(y/n)n
[{'id': 1, 'name': '1', 'age': 1}, {'id': 2, 'name': '2', 'age': 2}, {'id': 1, 'name': '1', 'age': 1}]
  • dict.update(dic)

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

    • 两个字典的键完全不同,则将dic的键值对全部添加到dict中
    • 存在相同的键,则更新dict中对应的值
dic={"job":'it','hobby':'read'}
dict={'id':00,'name':'tom','age':22}
dict2={'name':'jack','hobby':'read'}
dict.update(dic)
#dict.update(dict2)
print(dict)

{'id': 0, 'name': 'tom', 'age': 22, 'job': 'it', 'hobby': 'read'}
# {'id': 0, 'name': 'jack', 'age': 22, 'hobby': 'read'}

  • dict.pop()

    • 格式:

      dict.pop(key[,default])
      
      • 如果key存在于dict中,删除并返回dict[key]
      • 如果不存在,给出默认值则返回默认值,未给出默认值,报错
      dic={"id":2000,'name':'Tom','age':18}
      print(dic.pop("age"))
      # print(dic.pop("job",'it'))
      print(dic)
      
      18
      {'id': 2000, 'name': 'Tom'}
      
      # it   # 如果没有it报错
      # {'id': 2000, 'name': 'Tom', 'age': 18}
      
  • dict.popitem()

    • 随机删除一对键值对
    • 有返回值的,元组
    • 程序运行时常从最后一个开始删除 不常用 常用pop函数
    dic={"id":2000,'name':'Tom','age':18}
    print(dic.popitem())
    key,value=dic.popitem()
    print(dic)
    print(key,value)
    
    ('age', 18)
    {'id': 2000}
    name Tom
    
  • del

    dic={"id":2000,'name':'Tom','age':18}
    del dic['age']
    # del dic
    print(dic)
    
  • clear

dic={"id":2000,'name':'Tom','age':18}
dic.clear()
print(dic)

  • 直接修改
dic={"id":2000,'name':'Tom','age':18,'a':1}
dic["id"]=1000
print(dic)

{'id': 1000, 'name': 'Tom', 'age': 18, 'a': 1}
  • dict.setdefault()

    • 键存在,不改动,返回字典中的值
    • 不存在,在字典中添加相应的键值对,并返回对应的值
    dic={"id":2000,'name':'Tom','age':18,'a':1}
    print(dic.setdefault('name','Jack'))
    # print(dic.setdefault('number',10056))
    print(dic)
    
    Tom
    {'id': 2000, 'name': 'Tom', 'age': 18, 'a': 1}
    10056
    {'id': 2000, 'name': 'Tom', 'age': 18, 'a': 1, 'number': 10056}
    

字典值的访问

  • 直接通过字典的key访问value
dic={"id":2000,'name':'Tom','age':18,'a':1}
print(dic['id'])

2000
  • dict.get()访问value

    • 语法格式
    dict.get(key[,default])
    
    • 不确定字典中是否存在某个键而又想对其进行操作,比如获取值—>get方法
    • 当key不存在的时候,不会抛出异常,返回None
    dic={"id":2000,'name':'Tom','age':18,'a':1}
    print(dic.get('id'))
    print(dic.get('q'))
    
    2000
    None
    

遍历

  • dict.keys()
  • dict.values()
  • dict.items()
dic={"id":2000,'name':'Tom','age':18,'a':1}
for key in dic.keys():
    print(key,end=' ')
for value in dic.values():
    print(value,end=' ')
for key,value in dic.items():
    print(key,":",value,end=' ')
    
# id name age a 2000 Tom 18 1 id : 2000 name : Tom age : 18 a : 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值