zoukankan      html  css  js  c++  java
  • python_dict(关联数组的字典)

      第一次,看见字典这个东西,第一反应就像是关联数组。字典是另一种可变容器模型,且可存储任意类型对象。

      字典比列表强大多了,列表查找个数据,还需要知道索引,如果数据大了,就不好找索引,用迭代出来费时费劲。

      字典的特性:1.无序的 2.天生去重

      字典类型与序列类型的区别:

    1. 存取和访问数据的方式不同。
    2. 序列类型只用数字类型的键(从序列的开始按数值顺序索引);
    3. 映射类型可以用其他对象类型作键(如:数字、字符串、元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直接或间接地和存储数据值相关联。
    4. 映射类型中的数据是无序排列的。这和序列类型是不一样的,序列类型是以数值序排列的。
    5. 映射类型用键直接“映射”到值。

      1.增删改查

      

     1 student_info = {
     2     '001': {
     3         'name': "libai",
     4         'age': 22
     5     },
     6     '002': {
     7         'name': "dufu",
     8         'age': 22
     9     }
    10 }
    11 # 查看
    12 print(student_info['001'])
    13 # {'age': 22, 'name': 'libai'}
    14 
    15 # 修改
    16 student_info['001']['name'] = "luyou"
    17 print(student_info['001'])
    18 # {'name': 'luyou', 'age': 22}
    19 
    20 # 添加
    21 student_info['001']['qq'] = 123456
    22 print(student_info['001'])
    23 # {'qq': 123456, 'name': 'luyou', 'age': 22}
    24 
    25 # 删除
    26 del(student_info['001']['qq'])
    27 student_info['001'].pop('name')
    28 print(student_info['001'])
    29 # {'age': 22}

    2.各种方法

     1 # 获取 get() 没有返回none,如果用这种方式 student_info['003'] 获取不到值,会报错
     2 v = student_info.get('001')
     3 print(v)
     4 # {'name': 'libai', 'age': 22}
     5 
     6 # update 如果存在相对应KEY 把对应键值覆盖
     7 dict2 = {
     8     'name': 'sushi',
     9     '003': {
    10         'name': "wangwie",
    11         'age': 123
    12     }
    13 }
    14 student_info.update(dict2)
    15 print(student_info)
    16 # {'003': {'age': 123, 'name': 'wangwie'}, '001': {'age': 22, 'name': 'libai'},
    17 #  'name': 'sushi', '002': {'age': 22, 'name': 'dufu'}}

     1 # items()把字典变成元祖,数据量大的时候,转换会很耗时
     2 print(student_info.items())
     3 # dict_items([('name', 'sushi'), ('003', {'name': 'wangwie', 'age': 123}),
     4 #  ('001', {'name': 'libai', 'age': 22}), ('002', {'name': 'dufu', 'age': 22})])
     5 
     6 # values()获取所有的value已列表输出
     7 print(student_info.values())
     8 # dict_values([{'name': 'wangwie', 'age': 123}, {'name': 'dufu', 'age': 22}, {'name': 'libai', 'age': 22}, 'sushi'])
     9 
    10 # key()获取所有的key已列表输出
    11 print(student_info.keys())
    12 # dict_keys(['001', 'name', '002', '003'])
    13 
    14 # 查找key has_key()适用于2.0 3.0已经废弃
    15 # '001' in student_info
    16 
    17 
    18 # 取一个key,如果不存在,默认添加一个k,v
    19 print(student_info.setdefault('005', "hehe"))
    20 # hehe
    21 print(student_info)
    22 # {'002': {'age': 22, 'name': 'dufu'}, 'name': 'sushi', '003': {'age': 123, 'name': 'wangwie'},
    23 #  '001': {'age': 22, 'name': 'libai'}, '005': 'hehe'}
    24 
    25 
    26 #  fromkeys()把列表中的每个值拿出来当作字典的key,生成新的字典
    27 print(dict.fromkeys([1, 23, 42], 'a'))
    28 # {1: 'a', 42: 'a', 23: 'a'}
    1 # 随机删除元素
    2 print(student_info.popitem())
    3 # ('003', {'name': 'wangwie', 'age': 123})
    4 
    5 # 遍历字典
    6 for k,v in student_info.items():  # 效率低,因为有一个字典转换列表的过程
    7     print(k, v)
    8 for key in student_info: 9 print(key, student_info[key])

      

      

  • 相关阅读:
    MVC 控制器返回匿名对象集合(一般是用Linq 查出来的数据 或者其他) View 页面展示的解决方法 ........
    C#中base关键字的几种用法
    Aspose.cellls 的基本使用方法使用
    Web API 入门指南
    基于EF的外键的查询 使用【ForeignKey(“ SupplierId”】特性
    GET和POST两种基本请求方法的区别
    Replication的犄角旮旯(五)关于复制identity列
    Replication的犄角旮旯(二)寻找订阅端丢失的记录
    SQL优化(1)
    Replication的犄角旮旯(三)聊聊@bitmap
  • 原文地址:https://www.cnblogs.com/lzy007/p/6142981.html
Copyright © 2011-2022 走看看