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
  • 相关阅读:
    CodeForces 659F Polycarp and Hay
    CodeForces 713C Sonya and Problem Wihtout a Legend
    CodeForces 712D Memory and Scores
    CodeForces 689E Mike and Geometry Problem
    CodeForces 675D Tree Construction
    CodeForces 671A Recycling Bottles
    CodeForces 667C Reberland Linguistics
    CodeForces 672D Robin Hood
    CodeForces 675E Trains and Statistic
    CodeForces 676D Theseus and labyrinth
  • 原文地址:https://www.cnblogs.com/dannylinux/p/8244108.html
Copyright © 2011-2022 走看看