Python基础-字典

Python基础-字典

1.定义及特点

  • 定义:用{}括起来的变量
    基本格式:

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

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

  • 特点:

    • key:value,键值对之间用冒号(":")链接
    • key键不可重复
    • key:value,组成字典的一个元素
    • 可变
    • 无序
    • 可存储任意类型对象,是除列表以外使用最灵活的内置数据变量
  • 和列表的区别:列表有序,字典无序,列表通过索引(偏移)访问元素,字典通过键(Key)访问元素

2.字典的操作

2.1字典创建

  • 空字典的创建

    dic={}
    print(type(dic))
    
    '<class 'dict'>'
    
  • 多元素字典的创建

    dic = {'key1': 'value1', 'key2': 'value2', 'keyn':'valuen'}
    print(dic)
    
    '{'key1': 'value1', 'key2': 'value2', 'keyn': 'valuen'}'
    
  • 强制转换

    dic=dict(key1='value1',key2=123,key3=[123,123])
    print(type(dic),dic)
    
    zip()
    '''用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。'''
    key=('id','name','age')
    value=(13521,'Nico',13)
    tp=dict(zip(key,value))
    print(tp)
    
    '''
    <class 'dict'> {'key1': 'value1', 'key2': 123, 'key3': [123, 123]}
    {'id': 13521, 'name': 'Nico', 'age': 13}'''
    
  • 通过字典的fromkeys方法创建字典

    格式:

    dict.fromkeys(seq,val=None)

    创建并返回一个字典

    • 以seq中的元素作为该字典的键
    • val的值作为该字典中所有键对应的初始值,不提供,默认为None
    dic=dict.fromkeys(['J','K','L'],'v0')  #创建的字典的键值完全一致
    dic1=dict.fromkeys(['J','K','L'],['v0','v1',])
    print(dic)
    print(dic1)
    '''{'J': 'v0', 'K': 'v0', 'L': 'v0'}
    {'J': ['v0', 'v1'], 'K': ['v0', 'v1'], 'L': ['v0', 'v1']}'''
    

2.2增加元素

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

    dic={}
    print(dic)
    dic['id']=213131 #字典中没有键则增加键
    print(dic)
    dic['name']='Nico'
    print(dic)
    dic['name']='Jack'#字典中原有键,则更新键值
    print(dic)
    '''
    {}
    {'id': 213131}
    {'id': 213131, 'name': 'Nico'}
    {'id': 213131, 'name': 'Jack'}
    '''
    
  • dict.update(dic)

    若dict中没有dic的键,就将该键及其键值加在dict末尾,如有键则改变dict中的键值为dic中的

    dic={'job':'IT','hobby':'Read'}
    dic2={'name':'Jack','hobby':'read'}
    dict={'id':2323,'name':'Tom','age':11}
    dic3={'add':'sh'}
    dict.update(dic)
    print(dict)
    dict.update(dic2)
    print(dict)
    dict.update(dic3)
    print(dict)
    '''
    {'id': 2323, 'name': 'Tom', 'age': 11, 'job': 'IT', 'hobby': 'Read'}
    {'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read'}
    {'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
    '''
    

2.3删除元素

  • dict.pop()

    • 格式:

      dict.pop(key[,defaule]) 
      #如果 key存在于dict中,则删除并返会dict[key]
      #不存在 给出默认值 返回默认值 否则报错
      
    dict={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
    print(dict.pop('job'))
    print(dict)
    print(dict.pop('job',000))
    print(dict)
    '''
    IT
    {'id': 2323, 'name': 'Jack', 'age': 11, 'hobby': 'read', 'add': 'sh'}
    0
    {'id': 2323, 'name': 'Jack', 'age': 11, 'hobby': 'read', 'add': 'sh'}
    
    '''
    
  • dict.popitem()

    • 随机删除一对键值对(由于字典为无序序列,即使每次删除最后一对键值对,也算是是随机)
    • 返回值为元组
    dict={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
    print(dict.popitem())
    print(dict)
    print(dict.popitem())
    print(dict)
    '''
    ('add', 'sh')
    {'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read'}
    ('hobby', 'read')
    {'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT'}
    '''
    
  • del

    • del dict[key]

      删除dict中的key键值对

    • del dict

      删除字典

    dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
    del dic['id']#无返回值
    print(dic)
    del dic
    print(dic)
    '{'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}'
    'name 'dic' is not defined'
    
  • dict,clear()

    • 删除所有键值对
    dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
    dict.clear()#无返回值
    print(dic)
    '{}'
    

2.4改变元素

  • 直接修改
dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
dic['id']=1232
print(dic)
'{'id': 1232, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}'
  • 通过dict.setdefault()

    • 键存在,不改动,返回字典中的值
    • 键不存在时,在字典中添加相应的键值对,并返回对应的值
    dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
    print(dic.setdefault('id',1425))
    print(dic)
    print(dic.setdefault('tel',13456123211))
    print(dic)
    '''
    2323
    {'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
    13456123211
    '''
    

2.6查询元素

  • 通过键查询

    dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
    print(dic['age'])  #键存在则返回对应值,不存在报错
    '11'
    
  • dict.get()查询

    当不确定字典中是否存在该键但又想对其进行操作时使用此方法,因为即使key不存在,也不会抛出异常,返回None

    • 语法格式:

      dict.get(key[,defaule])
      
      dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
      print(dic.get('age'))
      print(dic.get('tt'))
      
      '11
      None'
      

2.7遍历

  • dict.keys()

    返回dict中的所有键

dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
print(dic.keys(),type(dic.keys()))
for key in dic.keys():
    print(key,end=' ')

'''
dict_keys(['id', 'name', 'age', 'job', 'hobby', 'add']) <class 'dict_keys'>
id name age job hobby add 
'''
  • dict.values()

    返回dict中的所有值

dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
print(dic.values(),type(dic.values()))
for  v in dic.values():
    print(v,end=' ')
    
    
'''
dict_values([2323, 'Jack', 11, 'IT', 'read', 'sh']) <class 'dict_values'>
2323 Jack 11 IT read sh 
'''
  • dict.items()

    返回dict中的键值对

dic={'id': 2323, 'name': 'Jack', 'age': 11, 'job': 'IT', 'hobby': 'read', 'add': 'sh'}
print(dic.items(),type(dic.items()))
for  k,v in dic.items():
    print(k,':',v)

'''
id : 2323
name : Jack
age : 11
job : IT
hobby : read
add : sh
 '''

实例

写一个能够实现增删改查的函数

li=[]
die={'name':[],'password':{}}
while True:
    i = input('是否进入系统(Y or N): ')
    if i=='N':
        print("正在退出系统")
        break
    else:
        j=int(input('需要什么操作(增(1),删(2),改(3),查(4): '))
        if j == 1:
            q=input('请输入增加姓名: ')
            p=input('请输入对应密码: ')
            die['name']=q
            die['password']=p
            li.append(die)
        elif  j==2:
            x=input('请输入要删除的用户: ')
            p=0
            for i in li: #遍历 列表中的元素(字典)
                for v in i.values():#遍历字典中的键值
                    if v ==x:
                        li.remove(i)
                        p=1
                        break
            if p==0:
                print('查无此用户')
        elif j==3:
            x = input('请输入要改变的用户: ')
            p = 0
            for i in li:
                for v in i.values():
                    if v == x:
                        s=input('请输入姓名: ')
                        i['name']=s
                        o=input('请输入密码: ')
                        i['password']=o
                        p = 1
                        break
            if p == 0:
                print('查无此用户')
        else:
            s=input('请输入要查询姓名: ')
            p=0
            for i in li:
                for v in i.values():
                    if v==s:
                        print(i)
                        p=1
                        break
            if p==0:
                print('查无此用户')

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值