zoukankan      html  css  js  c++  java
  • python学习笔记七——字典

    4.3 字典结构

      字典是Python中重要的数据类型,字典的由“键-值”对组成的集合,字典中的“值”通过“键”来引用。

    4.3.1 字典的创建

      字典由一系列的“键-值”(key-value)对组成,“键-值”对之间用“逗号”隔开,并且被包含在一堆花括号中。字典与java语言中的HashMap类作用类似,都是采用“键-值”对映射的方式存储数据。

      字典的创建格式如下:

    dictionary={key1:value1, key2:value2,...}

      其中,key1、key2等表示字典的key值,value1、value2等表示字典的value值。

      如果需要创建一个空的字典,只需要一对花括号即可,代码如下:

    dictionary = {}

      字典的创建和访问。

    dict={"a":"apple","b":"banana","g":"grape","o":"orange"}
    print(dict)
    print(dict["a"]) #打印建a对应的值

    注意:字典的“键”是区分大小写的。例如,dict["a"]与dict["A"]分别指向不同的值,应区别对待。

      创建字典时,也可以使用数字作为索引。

    dict={1:"apple",2:"banana",3:"grape",4:"orange"}
    print(dict)
    print(dict[2]) #打印建2对应的值,不用双引号
    [root@Dannyserver danny]# python a.py 
    {1: 'apple', 2: 'banana', 3: 'grape', 4: 'orange'}
    banana

      print()的使用非常灵活,也可以在print()中使用字典。下面示例字典在print()中的使用。

    print("%s,%(a)s,%(b)s" %{"a":"apple", "b":"banana"})
    [root@Dannyserver danny]# python a.py 
    {'a': 'apple', 'b': 'banana'},apple,banana

    解释:其中隐式的创建了字典{“a”:"apple","b":"banana"}。这个字典用来定制print()中的参数列表。“%s”输出这个字典的内容,"%(a)s"获取字典中对应的key值“a”的value值,“%(b)s”获取字典中对应key值"b"的value值。

    4.3.2 字典的访问

      字典的访问与元组、列表有所不同,元组和列表是通过数字索引来获取对应的值,而字典是通过key值获取相应的value值。访问字典格式如下:

    value = dict[key]

      字典的添加、删除和修改非常简单,添加或修改操作只需要编写一条赋值语句,例如:

    dict["x"] = "value"

      如果索引x不在字典dict的key列表中,字典dict将添加一条新的映射(x:value);如果索引x在字典dict的key列表中,字典dict将直接修改索引x对应的value值

      字典与列表不同,字典并没有remove()操作。字典元素的删除可以调用del()实现,del()属于内建函数,直接调用即可。列表可以调用pop()弹出列表中的一个元素,字典也有一个pop(),该方法的声明和作用与列表的pop()有些不同。pop()的声明如下所示。

    D.pop(k[,d])  -> v

    pop()必须指定参数才能删除对应的值。其中,参数k表示字典的索引,如果字典D中存在索引k,返回值v等于D[k];如果字典D中没有找到索引k,返回值为d。

      如果需要清除字典中所有的内容,可以调用字典的clear()。示例如下:

    #字典的添加、删除、修改操作
    dict={"a":"apple","b":"banana","g":"grape","o":"orange"}
    dict["w"]="watermelon" #添加字典元素   
    del(dict["a"]) #删除字典中键为a的元素
    dict["g"]="grapefruit"   #修改字典中键为g的值
    print(dict.pop("b"))    #弹出字典中键为b的元素
    print(dict)
    dict.clear()    #清除字典中所有元素
    print(dict)
    [root@Dannyserver danny]# python a.py 
    banana
    {'g': 'grapefruit', 'o': 'orange', 'w': 'watermelon'}
    {}

      由于字典是无序的,因此字典中没有append()、remove()等方法。如果需要向字典插入新的元素,可以调用setdefault()。

      字典的遍历有多种方式,最直接的方式是通过"for...in..." 语句完成遍历的任务。例:

    dict={1:"apple",2:"banana",3:"grape",4:"orange"}
    for k in dict:
            print("dict[%s]" %k,dict[k])
    [root@Dannyserver danny]# python a.py 
    dict[1] apple
    dict[2] banana
    dict[3] grape
    dict[4] orange

      注意:语句循环访问字典dict,变量k获取的是字典dict的key值,并没有直接获取value值。因此打印输出时,通过dict[k]来获取value值

      此外,还可以使用字典的items()实现字典的遍历操作,items()返回一个由若干元组组成的列表。例:

    dict={"a":"apple","b":"banana","c":"grape","d":"orange"}
    print(dict.items())
    [root@Dannyserver danny]# python a.py 
    dict_items([('a', 'apple'), ('b', 'banana'), ('c', 'grape'), ('d', 'orange')])

      可见,items()把字典中没对key和value组成一个元组,并把这些元组存放在列表中返回。下面将使用字典item()实现字典的遍历。

    dict={"a":"apple","b":"banana","c":"grape","d":"orange"}
    for(k,v) in dict.items():  #变量k和v分别与字典dict中的key和cvalue值对应
            print("dict[%s]" %k,v)
    [root@Dannyserver danny]# python a.py 
    dict[a] apple
    dict[b] banana
    dict[c] grape
    dict[d] orange

      除了能采用字符串作为字典的value值,元组、列表甚至字典都可以作为字典的value值。使用元组、列表或字典作为value值创建字典,称为混合型字典。格式如下:

    dict={"key1":(tuple), "key2":[list], "key3":[dictionary] ...}

    示例:

    dict={"a":("apple",),"g":["grape","grapefruit"],"bo":{"b":"banana","o":"orange"}}
    print(dict["a"])
    print(dict["a"][0])
    print(dict["g"])
    print(dict["g"][1])
    print(dict["bo"])
    print(dict["bo"]["b"])
    [root@Dannyserver danny]# python a.py 
    ('apple',)
    apple
    ['grape', 'grapefruit']
    grapefruit
    {'b': 'banana', 'o': 'orange'}
    banana
  • 相关阅读:
    Fiddler 的几个用法
    jQuery中ajax的使用和缓存问题解决 $getjson 与$get都会被IE缓存
    http与https的区别以及https的加密原理
    asp.net mvc通过预处理实现数据过滤和数据篡改。
    C# winform的WebBrowser非常规编程(强烈推荐)
    DES加密 java与.net可以相互加密解密的方法
    日常开发中常见的HTTP协议的状态码
    前端性能监控
    在手机的浏览器上通过连接打开App
    工作五年总结一二三流公司的常见特性
  • 原文地址:https://www.cnblogs.com/dannylinux/p/8244108.html
Copyright © 2011-2022 走看看