zoukankan      html  css  js  c++  java
  • Python 学习 第16篇:数据类型(字典和Json)

    字典是键/值对构成的集合,字典通过大括号来创建,字典的键是字符串,而值可以是任何数据对象。

    字典有两个重要的特征:

    • 字典是无序的,字典项没有特定的顺序,只能通过键来获取值;
    • 字典是可变的,支持原处修改键的值;
    • 字典是作为散列表来实现的,可增长,搜索非常快速;
    • 和列表一样,字典存储的是对象的引用,不是拷贝。

    创建字典

    创建空的字典:

    >>> d={}

    创建包含两个项目的字典:

    >>> d={'name':'vic','age':28}

    创建包含嵌套类型的字典:

    >>> d={'student':{'name':'vic','age':28}}

    通过dict函数来创建字典:

    >>> d=dict(name='vic',age=28)
    >>> d
    {'name': 'vic', 'age': 28}

    字典解析

    使用字典解析,可以使用迭代器来生成字典:

    >>> d={x:x**2 for x in range(0,5)}
    >>> d
    {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

    引用字典的值

    通过键来引用字典的值

    >>> d['name']
    'vic'
    >>> d['age']
    28

    或者使用dict.get(key, default)来获取键对应的值,其中default参数的作用是:当不存在键时,返回default作为该键的值:

    >>> d.get('name')
    'vic'
    >>> d.get('nam','jim')
    'jim'

    字典操作

    字典的基本操作有:

    • len(dict):字典项的数量,或者字典键的数量
    • dict.keys():所有字典键的集合
    • dict.values():所有字典值得集合
    • dict.items():字典项(键/值对)的集合
    • list(dict.keys()):把所有字典键转换为列表
    • list(dict.values()):把所有字典键的值转换为列表
    • d[key],d.get(key):根据字典的键获取值
    • key in dict:检查该key是否是字典的键

    1,添加/修改字典项

    如果字典中不存在Key,那么添加该Key/Value对;如果存在该Key,那么修改该Key的值。

    >>> d=dict(name='vic',age=28)
    >>> d['sex']='male'
    {'name': 'vic', 'age': 28, 'sex': 'male'}
    >>>
    >>> d['sex']='man'
    {'name': 'vic', 'age': 28, 'sex': 'man'}

    2,删除字典项

    dict.pop(key) 用于删除键为key的字典项

    >>> d.pop('sex')
    'man'
    >>> d
    {'name': 'vic', 'age': 28}

    或者使用 del dict[key]来删除键为key的字典项:

    >>> del d['sex']

    3,合并字典

    dict.update(dict2),把字典dict2合并到dict中

    >>> d.update({'tel':'120'})
    {'name': 'vic', 'age': 28, 'tel': '120'}

    4,复制字典

    dict.copy()获得字典的一个深拷贝(deep copy)对象,深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。

    dict2=dict:获得字典的一个浅拷贝(shallow copy)对象,浅拷贝只是增加了一个指针指向已经存在的内存。

    例如,深拷贝对象和原对象,指向不同的内存空间,修改任意一个字典,不会影响另外一个字典:

    >>> d=dict(name='vic',age=28)
    >>> dc=d.copy()   # deep copy
    >>> dc['tel']=120
    >>> d
    {'name': 'vic', 'age': 28}
    >>> dc
    {'name': 'vic', 'age': 28, 'tel': 120}

    而浅拷贝对象和原对象指向相同的内存空间,修改任意一个字典,另一个字典也会修改:

    >>> d=dict(name='vic',age=28)
    >>> sc=d     # shallow copy
    >>> sc['tel']=110
    >>> sc
    {'name': 'vic', 'age': 28, 'tel': 110}
    >>> d
    {'name': 'vic', 'age': 28, 'tel': 110}

    JSON结构

    Python中的json对象实际是一个字典结构,用于存储和交换信息,导入json模块:

    import json

    1,把字符串转换为json

    json的load()方法用于把josn格式的字符串转换为json对象,这实际上是一个字典结构:

    json_string=  '{ "name":"John", "age":30, "city":"New York"}'
    # parse string to json
    json_obj = json.loads(json_string)

    2,把字典转换为json字符串

    json的dumps()函数用于把字典结构转换为json格式的字符串。

    x = {
      "name": "John",
      "age": 30,
      "city": "New York"
    }
    # convert dict into JSON string:
    json_string = json.dumps(x)

    参考文档:

  • 相关阅读:
    信号
    13. 罗马数字转整数
    ES6基础-constructor与super
    关于antd-vue动态表单的问题以及解决方案
    (vue)关于在ui框架方法中传入多个参数的解决方案
    ts-4: 类型别名与interface
    ts-3:元组与类型约束
    TS-2:类型注释与类型推断、函数参数的定义与返回类型的定义、对象成员与数组成员的定义方法、类型别名与类别名
    LeetCode 141. 环形链表 | Python
    LeetCode 459. 重复的子字符串 | Python
  • 原文地址:https://www.cnblogs.com/ljhdo/p/10279486.html
Copyright © 2011-2022 走看看