zoukankan      html  css  js  c++  java
  • Python3 字典

    Python3字典特点

      1. 无序

      2.键唯一      #不可变对象:整数、字符串、元组;可变对象:列表、字典

        键:字典中,字典值可以是pyton 任意一个对象,但键不行;键在字典中不能出现相同的键,如果相同,后一个值会被记住,如下实例:

    dic = {'name':'xp','name':'26','job':'IT','salary':9000}
    print(dic) # 打印结果为:{'name': '26', 'job': 'IT', 'salary': 9000}

        键必须不可变,可以是数字,字符串或者元组,决不能用列表和字典。

    字典的创建

      字典的每个键值(key)对用冒号(:)分割,每个键值对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

    1 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
    2 print(dic)

    查 通过键去查找

      把相应的键放入到方括号中

    1 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
    2 print(dic['age'])   #打印结果为:26
    3 print(list(dic.keys())) #以列表形式打印字典中的键;也可以不用加liest转换    dic.keys()
    4 #打印结果:['name', 'age', 'job', 'salary']
    5 print(list(dic.values())) # 以列表形式打印字典中所有键对应的值            dic.values()
    6 #打印结果为:['xp', '26', 'IT', 9000]
    7 print(list(dic.items())) #以列表的形式打印字典中所有的键值对              dic.items()
    8 #打印结果为:[('name', 'xp'), ('age', '26'), ('job', 'IT'), ('salary', 9000)]

      上述程序中有一种情况下需要用 list 转换,如下程序:

    1 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
    2 dic1 = dic.keys()
    3 print(dic1)   #打印结果为:dict_keys(['name', 'age', 'job', 'salary'])
    4 #print(dic1[1]) 打印这句话会报错
    5 #报错 TypeError: 'dict_keys' object does not support indexing  是因为dic1打印出来的是对象不是列表,怎么办呢?
    6 
    7 print(list(dic1)[1]) #打印结果为: age
    8 #加上list 转换,将dic1转换为列表:['name', 'age', 'job', 'salary'],然后取[1]元素。

      字典中键不存在会是什么样呢?请看实例

    1 dic = {'name':'xp','job':'IT','salary':9000}
    2 print(dic)# 打印结果为:{'name': 'xp', 'job': 'IT', 'salary': 9000}
    3 dic['age'] = 18
    4 print(dic)#打印结果为:{'name': 'xp', 'job': 'IT', 'salary': 9000, 'age': 18}
    5 #通过例子我们能看出字典中如果键不存在,将会添加对应的键值对。这也是添加字典的一种方法如果将dic['age'] = 18 改为 dic['age'] 那么会报错,大家可以试试。

      字典中键存在,又会是什么结果呢?请看实例

    1 dic = {'name':'xp','age':26,'job':'IT','salary':9000}
    2 
    3 ret = dic.setdefault('age',34)  #setdefault() 函数 如果键存在,则返回对应的值,
    4 print(ret) #打印结果为:26

    改 修改字典

      通过增加新的键值对,来修改或者删除字典中已有的内容

    1 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
    2 dic['age'] = 20  #通过键来修改对应的值。
    3 print(dic)
    4 #打印结果为:{'name': 'xp', 'age': 20, 'job': 'IT', 'salary': 9000}
    5 
    6 dic['like'] = 'book'
    7 print(dic)
    8 #打印结果为:{'name': 'xp', 'age': 20, 'job': 'IT', 'salary': 9000, 'like': 'book'}
    1 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
    2 dic1 = {'like':'book','name':'UUM'}
    3 dic.update(dic1)# update()  通过函数进行修改,被修改的字典里与要添加的键相同,则被修改的字典对应的键值被更新
    4 print(dic) 
    5 #打印结果为:{'name': 'UUM', 'age': '26', 'job': 'IT', 'salary': 9000, 'like': 'book'}
    6 
    7 print(dic1)
    8 #打印结果为:{'like': 'book', 'name': 'UUM'}

    删 删除字典

     1 #程序1
     2 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
     3 del dic['name']  #通过键来删除字典中的键值对
     4 print(dic) # 打印结果为:{'age': '26', 'job': 'IT', 'salary': 9000}
     5 
     6 #程序2
     7 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
     8 a=dic.pop('age')  #删除该键值对应的值,并返回该键值对应的值
     9 print(dic) #打印结果为:{'name': 'xp', 'job': 'IT', 'salary': 9000}
    10 print(a) #打印结果为:26
    11 
    12 #程序3
    13 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
    14 b = dic.popitem()  #随机删除字典中某组键对值,并以元组方式返回
    15 print(b)   # 打印结果为:('salary', 9000)
    16 print(dic) # 打印结果为:{'name': 'xp', 'age': '26', 'job': 'IT'}
    17 
    18 #程序4
    19 dic = {'name':'xp','age':'26','job':'IT','salary':9000}
    20 dic.clear()   #清空字典,但字典还存在,只不过是是一个空字典
    21 print(dic) #打印结果为:{}
    22 
    23 del dic #删除字典,再打印的话会报错
    24 print(dic) #提示错误:NameError: name 'dic' is not defined

    字典嵌套

       字典是支持无限极嵌套的。

     1 cities = {
     2     '河南省':{
     3         '商丘市':['民权县','睢县','宁陵县'],
     4         '开封市':['兰考县','杞县','通许县'],
     5         '洛阳市':['宜阳县','洛川县','伊川县']
     6             },
     7     '北京市':{
     8         '大兴区':['西红门','黄村','天宫院'],
     9         '丰台区':['郭公庄','科技园','总部基地'],
    10         '朝阳区':['望京','将台','太阳宫'],
    11         '海淀区':['万柳','三小','巴沟']
    12             },
    13     '河北省':{
    14         '保定市':['涿州市','高碑店','保定'],
    15         '廊坊':['永清','自然公园','安次区'],
    16         '张家口':['怀安县','万全区','桥西区']
    17             }
    18         }
    19 print(cities['河南省']['洛阳市'][1])
    20 #打印结果为:洛川县

      由上面的例子可知,河南省、北京市、河北省是个大的字典,而河南省又是个字典,字典里面又嵌套列表。

    其他操作

      dic.formkeys(参数,子参数) 其中参数可以是列表、元组。

    1 dic = {}  #定义一个空字典
    2 dic1 = dic.fromkeys(('host1','host2','host3'),'date')#.formkeys(参数,子参数)函数会生成一个字典
    3 print(dic1)   #一般初始化用 
    4 # 打印结果为:{'host1': 'date', 'host2': 'date', 'host3': 'date'}
    dic = {}  #定义一个空字典
    dic1 = dic.fromkeys(['host1','host2','host3'],#会打印字典里面有列表['date1','date2'])#.formkeys(参数,子参数)函数会生成一个字典
    print(dic1)   #一般初始化用
    # 打印结果为:{'host1': ['date1', 'date2'], 'host2': ['date1', 'date2'], 'host3': ['date1', 'date2']}

      sorted()

    dic = {'name':'xp','age':26,'job':'IT','salary':9000}
    print(sorted(dic))    # 对键进行排序
    #打印结果为:['age', 'job', 'name', 'salary']
    print(sorted(dic.items())) # 对键值对进行排序
    #打印结果为:[('age', 26), ('job', 'IT'), ('name', 'xp'), ('salary', 9000)]

    循环打印字典中的 values 和keys 的值

    1 dic = {'name':'xp','age':26,'job':'IT','salary':9000}
    2 for i in dic.values():    #循环打印字典中键对应的值(values)
    3     print(i)
    4 for i in dic.keys():  #循环打印键的值(keys)
    5     print(i)

    字典目前学到的就这些,以上是我学习过程中所总结的笔记,希望对大家有所帮助,觉得不错可以关注我哦~_~

  • 相关阅读:
    【转帖】太晚睡觉等于自杀(一定要看看,以后不熬夜了!)程序员必看
    C盘碎片整理时“无法移动的文件”的处理
    【转帖】VS2008+SQL2005开发环境搭建
    【转帖】财务尽职调查资料收集总结
    SQL2005开发版SSIS正常连接需要修改的地方
    【未解决】制作可选择目录树的控件(替换使用参数进行递进选择)
    【未解决】VS2008与Reporting Services结合生成的网站,速度超慢,何故?
    新博开张
    【已解决】尝试为文件 ......\App_Data\aspnetdb.mdf 附加自动命名的数据库,但失败...
    SSRS表达式
  • 原文地址:https://www.cnblogs.com/xp0919/p/9542014.html
Copyright © 2011-2022 走看看