zoukankan      html  css  js  c++  java
  • Python3 数据类型-字典

    字典是一种可变数据类型,且可存储任意类型对象。

    字典使用大括号"{}"括起来,由键(key)和值(values)组成,键只能使用不可变类型定义,值可以使用可变类型{'键':'值'}

    一 创建

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    7
    8
    dic = {'name':'makes','age':'30','hobby':'gril','is_handsome':True}
    print(dic['name'])     #makes
     
    dic1 = {1:'makes','hobby':{'age':35,'gril_name':'wanglk'},'age':30}
    print(dic1['hobby'])    #{'gril_name': 'wanglk', 'age': 35}
     
    dic2 = dict((('name','makes'),('age',30)))
    print(dic2)      #{'name': 'makes', 'age': 30} 

    二 修改

    实例(Python3.0+):直接修改

    1
    2
    3
    4
    5
    6
    7
    dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
     
    dict['Age'] = 8;            # 更新 Age
    dict['School'] = "清华大学"  # 添加信息
     
    print ("dict['Age']: ", dict['Age'])
    print ("dict['School']: ", dict['School'])

    dict.setdefault

    • 键存在,不改动,返回字典中相应的值
    • 键不存在,在字典中添加相应的键值对,并返回相应的值

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    dic = {'name':'makes','age':'30','hobby':'gril','is_handsome':True}
     
    #键存在,不改动,返回字典中相应的值
    dic.setdefault('age',35)
    ret = dic.setdefault('age',35#有返回值
    print(ret)
    #30
    print(dic)
    #{'name': 'makes', 'age': '30', 'is_handsome': True, 'hobby': 'gril'}
     
    #键不存在,在字典中添加相应的键值对,并返回相应的值
    dic.setdefault('salary',10000)
    ret = dic.setdefault('salary','10000')
    print(dic)
    #{'name': 'makes', 'hobby': 'gril', 'salary': 10000, 'age': '30', 'is_handsome': True}
    print(ret)
    #10000

    三 查

    dict.keys()

    • 以列表的方式返回字典中的所有键(keys)

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dic1 = {'age':19,'name':'lvcm','hobby':'study'}
    print(dic1['age'])  #19
     
    print(dic1.keys())
    #查看字典中的所有键,dict_keys(['age', 'hobby', 'name'])
    print(type(dic1.keys()))
    #<class 'dict_keys'>
    print(list(dic1.keys()))
    #['name', 'age', 'hobby']
     
    dic2 = {'name':'makes','age':['123','345'],'salary':20000}
    print('age的值为:',dic2['age'][1])
    #字典中的值为列表时,可以使用dic.[keys][索引]方式查看
    #age的值为: 345  

    dict.values()

    • 以列表的方式返回字典中的所有值(values)

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    dic1 = {'age':19,'name':'makes','hobby':'study'}
     
    print(dic1.values())
    #dict_values(['makes', 19, 'study'])
    print(list(dic1.values()))
    #['study', 19, 'makes']

    四 更新

    dict.update(dict1)

    • 把字典dict1的键/值对更新到dict里
    • 当两个字典中的键不同时,把dict1的键值插入到dict中
    • 当两个字典中存在相同键时,dict1覆盖dict的键值

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # 当两个字典完全不相同时
    dic1 = {'name':'lvcm','age':19}
    dic2 = {'hobby':'girl','salary':10000}
     
    dic1.update(dic2)
     
    print(dic1)
    # dic1--> {'hobby': 'girl', 'age': 19, 'salary': 10000, 'name': 'lvcm'}
    print(dic2)
    # dic2 --> {'hobby': 'girl', 'salary': 10000}
     
    # 当两个字典存在相同键时,会覆盖前面的键值
    dic1 = {'name':'lvcm','age':19}
    dic2 = {'hobby':'girl','salary':10000,'name':'1111'}
     
    dic1.update(dic2)
    # dic1 --> {'salary': 10000, 'age': 19, 'hobby': 'girl', 'name': '1111'}
    print(dic1)
    # dic2 --> {'salary': 10000, 'hobby': 'girl', 'name': '1111'}
    print(dic2)  

    五 删除

    del dict[keys]

    • 删除字典中的某个键值对
    • 没有返回值

    实例(Python3.0+):

    1
    2
    3
    4
    dic1 = {"name":"makes","age":19,"salary":10000}
     
    del dic1["name"]
    print(dic1)

    del dict

    • 删除整个字典

    实例(Python3.0+):

    1
    2
    3
    4
    5
    dic1 = {"name":"makes","age":19,"salary":10000}
     
    del dic1
    print(dic1)
    #NameError: name 'dic1' is not defined(字典已删除,所以报错dict1未定义) 

    dict.clear()

    • 清空字典

    实例(Python3.0+):

    1
    2
    3
    4
    5
    dic1 = {"name":"makes","age":19,"salary":10000}
     
    dic.clear()
    print(dic1)
    # {} 

    dict.popitem()

    • 随机删除字典中的一组键值对  
    • 有返回值,以元祖方式返回
    • 应用不广泛

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    7
    dict1 = {"name":"makes","age":19,"salary":10000}
     
    dict2 = dict1.popitem()
    print(dict1)
    #{'age': 19, 'salary': 10000}
    print(dict2)
    #('name', 'makes')

    六 字典排序

    sorted()

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    dic6 = {2:111,3:222,4:333}
     
    # 以键来进行排序
    print(sorted(dic6.items()))
    # 以值进行排序
    print(sorted(dic6.values()))  

    七 遍历

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    dic7 = {'name':'makes','age':19}
     
    print('dic7 items:',dic7.items())
    #以列表返回可遍历的(键, 值) 元组数组
    #dic7 items: dict_items([('name', 'lvcm'), ('age', 19)])
     
    for key in dic7:
        print(key)
     
    """
    针对键进行遍历,也可如下写法:
    for key in dic7.keys():
        print(key)
    name
    age
    """
     
    for values in dic7.values():
        print(values)
    """
    针对值进行遍历
    19
    lvcm
    """
     
    for i in dic7:
        print(i,dic7[i])
    """
    针对键和值组合遍历,推荐使用
    name makes
    age 19
    """
     
    for i,v in dic7.items():
        print(i,v)
    """
    针对键和值组合遍历
    age 19
    name makes
    """

    八 其它操作及方法

    dict.fromkeys()

    • 初始化字典时使用

    实例1(Python3.0+):

    1
    2
    3
    4
    5
    6
    dic5 = dict.fromkeys(['host1','host2','host3'],'test')
    print(dic5) # {'host2': 'test', 'host1': 'test', 'host3': 'test'}
     
    dic5 = dict.fromkeys(['host1','host2','host3'],['test','test1'])
    print(dic5)
    #{'host3': ['test', 'test1'], 'host2': ['test', 'test1'], 'host1': ['test', 'test1']}

    实例2(Python3.0+):

    1
    2
    3
    4
    5
    6
    dic5 = dict.fromkeys(['host1','host2','host3'],['test','test1'])
     
    dic5['host1'][1]='test3'
    print(dic5)
    # {'host1': ['test', 'test3'], 'host3': ['test', 'test3'], 'host2': ['test', 'test3']}
    # 想法是把host1中的test1修改成test3,但是结果却修改了全部,此法慎用

    字典嵌套

    实例(Python3.0+):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dic1 = {
        '欧美':{
        'www.baidu.com':['免费的','质量一般']},
        '日韩':{
        'www.runoob.com':['收费的','质量标清']},
        '国产':{
        'www.sina.com.cn':['免费的','高清']},
        '三级片':{
        'www.1024.com':['免费的','下载速度慢']},
        '四级片':{
        'www.bokeyuan.com':['收费的','无码']},
        }
    print(dic1)
    #{'欧美': {'www.baidu.com': ['免费的', '质量一般']}, '国产': {'www.sina.com.cn': ['免费的', '高清']}, '日韩': {'www.runoob.com': ['收费的', '质量标清']}, '三级片': {'www.1024.com': ['免费的', '下载速度慢']}, '四级片': {'www.bokeyuan.com': ['收费的', '无码']}}

    九 函数

    len()

    • 计算字典元素个数,即键的总数。

    实例(Python3.0+):

    1
    2
    3
    dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    print(len(dict))
    #3

    type(variable)

    • 返回输入的变量类型,如果变量是字典就返回字典类型

    实例(Python3.0+):

    1
    2
    3
    dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    print(type(dict))
    #<class 'dict'>

    str(dict)

    • 输出字典,以可打印的字符串表示

    实例(Python3.0+):

    1
    2
    3
    dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    print(str(dict))
    #"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}" 
  • 相关阅读:
    LeftoverDataException,依赖包,apache license 2.0
    GPL,BSD,Apache,MIT开源许可协议
    一次重构经历
    转载:reactor模式学习
    版本控制学习
    系统开发,出错处理,日志
    最近学习linux命令的一个总结
    sudo,linux 新建账号,并开通ssh登录
    运行R 报错R cannot R_TempDir, 继而发现/dev/mapper/VG00-LV01 磁盘空间已满
    用InputStream读出来转换成String类型
  • 原文地址:https://www.cnblogs.com/Jintaonet/p/11161114.html
Copyright © 2011-2022 走看看