zoukankan      html  css  js  c++  java
  • 基本数据类型及内置方法之字典

    字典(dict)

    定义方式:通过大括号存储数据,通过key:value来定义键值对数据, 其中value可以是任意类型,而key则必须是不可变类型 ,因为str类型会对value有描述性的功能,每个键值对中间通过逗号分割

    三种定义方式

    #第一种
    d1 = {'name': 'sean'}
    #第二种
    d1 = dict(name= 'sean')
    #第三种zip
    l1 = ['name', 'age']
    l2 = ['sean', 18]
    z1 = zip(l1, l2)
    print(dict(z1))
    {'name': 'sean', 'age': 18}

    类型转换

    # 转换1: 
    >>> info=dict([['name','tony'],('age',18)])
    >>> info
    {'age': 18, 'name': 'tony'}

    # 转换2:fromkeys会从元组中取出每个值当做key,然后与None组成key:value放到字典中
    >>> {}.fromkeys(('name','age','sex'),None)  
    {'age': None, 'sex': None, 'name': None}

    需要掌握

    按照key:value的映射关系取值(可存可取)

    #取
    l1 = {'name': 'sean', 'age': 18}
    print(l1['name'])
    sean

    #赋值,如果key原先不存在于字典,则会新增key:value
    l1 = {'name': 'sean', 'age': 18}
    l1['name'] = 'egon'
    print(l1)
    {'name': 'egon', 'age': 18}
    l1['gender'] = 'female'
    print(l1)
    {'name': 'egon', 'age': 18, 'gender': 'female'}

    成员运算(in,not in)

    l1 = {'name': 'sean', 'age': 18}
    print('name' in l1) #判断某个值是否是字典的key
    True
    print('name' not in l1)
    False

    len()

    #获取字典中键值对的个数
    l1 = {'name': 'sean', 'age': 18}
    print(len(l1))
    2

    键keys(),值values(),键值对items()

    l1 = {'name': 'sean', 'age': 18}
    print(l1.keys())
    dict_keys(['name', 'age'])
    print(l1.values())
    dict_values(['sean', 18])
    print(l1.items())
    dict_items([('name', 'sean'), ('age', 18)])

    get()

    #get()获取指定key的值,如果值不存在,默认返回None,可以通过第二个参数修改默认返回列表
    l1 = {'name': 'sean', 'age': 18}
    print(l1.get('name'))
    sean
    print(l1.get('gender'))
    None
    print(l1.get('gender', '*'))
    *

    删除

    #pop()指定key进行删除,返回值为对应的value
    l1 = {'name': 'sean', 'age': 18}
    print(l1.pop('name'))
    sean
    #popitem随机弹出一个键值对,返回值为一个元组
    l1 = {'name': 'sean', 'age': 18}
    print(l1.popitem())
    ('age', 18)

    update()

    #用新字典更新旧字典,有则修改,无则添加
    l1 = {'name': 'sean', 'age': 18}
    l1.update({'name':'egon'})
    print(l1)
    {'name': 'egon', 'age': 18}
    l1.update({'gender': 'female'})
    print(l1)
    {'name': 'egon', 'age': 18, 'gender': 'female'}

    formkeys()

    #生成一个新字典,第一个参数(列表),它会以第一个参数中的各个元素为key,以第二个参数为值,组成一个新字典
    l1 = dict.fromkeys(['a', 'b', 'c'], [1])
    print(l1)
    {'a': [1], 'b': [1], 'c': [1]}

    setdefault()

    #key不存在,则新增键值对;key存在返回对应的value
    l1 = {'name': 'sean', 'age': 18}
    l2 = l1.setdefault('gender', 'female')
    print(l2)
    female
    print(l1)
    {'name': 'sean', 'age': 18, 'gender': 'female'}

    #key存在,则不做任何修改,并返回已存在key对应的value值
    l1 = dict.fromkeys(['a', 'b', 'c'], [1])
    l3 = l1.setdefault('name', 'egon')
    print(l3)
    sean
    print(l1)
    {'name': 'sean', 'age': 18}

    字典为无序 可变 多个值的类型

  • 相关阅读:
    skynet源码分析之socketchannel
    skynet源码分析之master/salve集群模式
    skynet源码分析之网络层——网关服务器
    Android反编译基础(apktoos)--广工图书馆APK
    Android-Native-Server 启动和注册详细分析
    Android NDK r8 windows环境搭建
    Android 4.1.1源码编译
    Android Binder------ServiceManager启动分析
    更改系统盘符后DFS无法复制故障处理
    Centos6.9部署Gitlab-11.9.8并汉化
  • 原文地址:https://www.cnblogs.com/a736659557/p/11807456.html
Copyright © 2011-2022 走看看