zoukankan      html  css  js  c++  java
  • python字典的概念与基本操作

    字典是非常常用的一种数据结构,它与json格式的数据非常相似,核心就是以键值对的形式存储数据,关于Python中的字典做如下四点说明:

    1.构造字典对象需要用大括号表示 {},每个字典元素都是以键值对的形式存在,并且键值对之间用英文状态下的'':''隔开

    2.键在字典中是唯一的,不能有重复,对于字符型的键需要用引号引起来。值可以是单个值,也可以是多个值构成的列表,元组或字典

    3.字典不再是序列,无法通过为止索引完成元素值的获取,只能通过键索引实现。

    4.字典与列表一样,都是可变类型的数据结构。

    dict1={'姓名':'张三','年龄':'33','性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}

    print(dict1)

    print(dict1['年龄'])

    print(dict1['子女']['儿子'])

    print(dict1['兴趣'][1])   

    out:

    {'姓名': '张三', '年龄': '33', '子女': {'儿子': '张四', '女儿': '张美'}, '性别': '男', '兴趣': ['踢球', '游泳', '唱歌']}

    33

    张四
    游泳

    #对于字典来说,它不再是序列,通过第一条输出的结果可知,构造时的字典元素与输出时的字典元素顺序已经发生了变化,想要获取元素的值,只能
    在索引里面写入具体的键。


    字典元素的基本操作方法:
    1.字典元素的增加
    一般使用以下三种方式实现:分别是:setdefault,update方法和键索引方法:
    接上面的举例:
    dict1.setdefault('户籍','合肥') #往字典中增加户籍信息 此处需要注意一点,不是('户籍''合肥')
    dict1.update({'学历':'硕士'}) #添加学历信息 通过update的方式增加,添加的是字典形式的对象
    dict1['身高'] = 178         #增加身高信息 通过直接键索引的方法直接设定对象并赋值即可

    2.字典元素的删除
    关于字典元素的删除可以使用pop,poptiem和clear三种方法实现。
    例如:
    dict1.pop('户籍') #删除户籍信息
    dict1['子女'].pop('女儿') #删除字典中女儿的姓名
    dict1.popitem() #删除字典的最后一个元素
    dict1.clear() #清除字典元素

    3.字典元素的修改
    字典元素的修改如增加部分提到的,也可以使用update方法和键索方法完成字典元素的修改.需要注意的是如果字典中的值是另一个字典或列表,
    需要先通过键索引实现字典元素的查询,然后在查询的基础上应用对应的修改方法即可(如update方法,取而代之).如下列出另外的几个比较重要的方法:
    dict2 = {'电影':['三傻大闹宝莱坞','大话西游之大圣娶亲','疯狂动物城'],
    '导演':['张三','李四','刘德华'],'评分':[9.1,9.2,9.3]}
    print(dict2.get('评分'))
    print(dict2.keys())
    print(dict2.values())
    print(dict2.items())
    get方法的功能与建索引已知,可以从字典中取出键对应的值.所不同的是,如果某个键在字典中不存在,应用建索引的方法出产生'键错误'的信息;
    而get方法不会报错,如果没有get到的话会显示None,也就不会影响其他脚本的正常执行.keys,values和items方法分别取出字典中的所有键,值和键值对.



    另外 keys(),values()和items()方法都可以用于字典的操作,值得注意一点的是,用这三个方法返回类似的列表的值,但这个返回值不是真正的列表,它们不能被修改,没有append()
    方法,但这些数据类型可以用于for循环。如:
    for v in spam.values():
      print(v)

    字典中的get()方法
      在访问一个键的值之前,检查该键是否存在于字典中,这很麻烦。好在,字典有一个get()方法,它有两个参数:要取得其值的键,以及如果该键不存在事,返回的备用值,如下例题中
    设置的备用值就是 0,你也可以指定 。

    例如:

    picnicItems = {'apples':5,'cups':2}
    print(str(picnicItems.get('cups',0))+ 'cups.')
    print(str(picnicItems.get('eggs',0))+ 'eggs.')

    out:

    2cups.
    0eggs.

    picnicItems字典中没有‘eggs’,get()方法返回备用值0.如有这个键就返回具体的值,如例题的是 2


    setdefault()方法

      常常需要为字典中的某个键设置一个默认值,当该键没有任何值时就使用它代替。

    例如:

    >>> spam = {'name':'Pooka','age':5}
    >>> spam.setdefault('color','black')
    'black'
    >>> spam
    {'name': 'Pooka', 'age': 5, 'color': 'black'}
    >>> spam.setdefault('color','white')
    'black'
    >>> spam
    {'name': 'Pooka', 'age': 5, 'color': 'black'}
    第一次调用setdefault()时,spam变量中的字典变为:{'name': 'Pooka', 'age': 5, 'color': 'black'} 该方法返回值‘black’,因为现在该值被赋给键‘color’。当接下来 

     spam.setdefault('color','white'),该键的值没有被改成 white,因为spam变量已经有一个名为 color的键了。

    setdefault()方法是个很好的快捷方式,可以确保一个键存在。如下:

    message = 'It was a bright cold day in April ,and the clocks wre striking thirteen.'
    count = {}
    for character in message:
      count.setdefault(character,0)
      count[character] = count[character] + 1
    print(count)

    out:

    {'I': 1, 't': 6, ' ': 13, 'w': 2, 'a': 4, 's': 3, 'b': 1, 'r': 5, 'i': 6, 'g': 2, 'h': 3, 'c': 3, 'o': 2, 'l': 3, 'd': 3, 'y': 1, 'n': 4, 'A': 1, 'p': 1, ',': 1, 'e': 4, 'k': 2, '.': 1}

    如上,用setdefault()方法,确保count字典中的初始值都是0,这样执行count[character] = count[character] + 1 时就不是出现KeyError的错误;


  • 相关阅读:
    定制化培养:破解企业人才之困
    IT毕业生需要具备的六种能力素质
    JAVA值传递or引用传递
    就业形势严峻 毕业生需练好“内功”
    如何改变mysql auto increment 步长和初始值
    python变量作用域
    关于python的lxml.html 的fromstring 函数
    python string 到date object
    python mysql 连接数据库 latin1 codec错误
    python 使用 mysqldb 批量插入数据
  • 原文地址:https://www.cnblogs.com/tinglele527/p/11684228.html
Copyright © 2011-2022 走看看