zoukankan      html  css  js  c++  java
  • Python数据类型-字典

    字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。

    两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

    字典的查询速率要高于列表,列表属于线性存储

    字典的每个元素:key/value key 相当于列表中的 索引
    字典的每个键:唯一
    字典的每个值:不唯一
    字典的元素不分顺序
    字典不能像列表和元组那样可以进行运算
    不可变类型:整型,字符串,元祖,字典的键只能存不可变类型,如果同时存在两个相同的键,后面的键会覆盖前面的键
    可变类型:列表,字典
    #!/usr/bin/python 
    # -*- coding: UTF-8 –*- 
    d = {} 
    d['one'] = "This is one" #字典中添加元素 格式:字典名[键] = 值 
    d['2'] = "This is two" 
    tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

    1、查

    # 当通过索引取值时,如果 key 不存在,返回默认值:None,也可以指定默认值:d.get('key','str'),返回默认值:str
    print(d.get('one1'))  # 输出键为'one' 的值,键不存在不会报错,返回 None,推荐使用
    # print(d['one1'])  # 输出键为'one' 的值,如果键不存在则报错
    print(d['2'])  # 输出键为 '2' 的值
    print(tinyd)  # 输出完整的字典
    print(tinyd.keys())  # 输出所有键
    print(tinyd.values())  # 输出所有值
    print(d.items())  # 获取所有的键值对
    print('str' in d.keys())  # 检测字典中的key是否存在,返回 true、false
    print(sorted(d))  # 默认按键名排序,排序也是要数据类型要一致,不然会报错

    2、增

    d2 = {}
    d2['hjc'] = "boy"  # 字典中添加元素 格式:字典名[添加的键] = 值,如果键存在,将修改键的值
    d.update(d2)  # 把字典2合并到字典1里去 格式:源字典.update(被合并的字典),如果存在同样的键,合并后会覆盖旧的键
    d.update({'k1': 'v1'})  # 另一个添加方法
    print(d)   # {'one': 'This is one', '2': 'This is two', 'hjc': 'boy', 'k1': 'v1'}

    3、改

    d['hjc'] = "girl"  # 字典用修改元素 格式:字典名[修改的键] = 值
    # 如果 hobby 键不存在,则新建一对键值对,并打印,存在,则不做任何处理,并把存在的值打印出来
    d.setdefault('hobby', 'girl')
    print(d)    # {'one': 'This is one', '2': 'This is two', 'hjc': 'girl', 'hobby': 'girl'}

    4、删

    del d['hjc'] # 删除字典中的元素和值 格式:del 字典名['删除的键'],如果键不存在会报错
    d.clear() # 清除字典中的所有内容,返回空字典
    print(d.pop('key')) # 删除对应的 key 和 value,如果键不存在会报错,dict.pop('key',None) 可以避免错误,返回 None
    print(d.popitem()) # 随机删除一组键值对,没卵用

    5、其他方法

    dict1 = dict.fromkeys(['host1', 'host2', 'host3'],'test')  # test 作为值,同时赋值给前面的 3 个键
    print(dict1)  # {'host1': 'test', 'host2': 'test', 'host3': 'test'}
    
    dict1 = dict.fromkeys(['host1', 'host2', 'host3'], ['test1', 'test2'])  # 值作为列表,赋值给前面的3个键,作为值
    print(dict1) # {'host1': ['test1', 'test2'], 'host2': ['test1', 'test2'], 'host3': ['test1', 'test2']}
    # 循环取 key:
    for i in tinyd:
        print(i)
    # 循环遍历取 键值对;
    # 法1:(推荐,效率最高)
    for i in tinyd:
        print(i, tinyd[i])
    '''
    name john
    code 6734
    dept sales
    '''
    
    # 法2:
    for k, v in tinyd.items():  # items 默认输出键值对,这里设置变量,把 key 赋值给 k,value 赋值给 v
        print(k, v)
    '''
    name john
    code 6734
    dept sales
    '''
    
    
    # 法3:
    new_dic = dict(enumerate(tinyd))
    print(new_dic)  # {0: 'name', 1: 'code', 2: 'dept'}
  • 相关阅读:
    电影记录管理系统 修改与注释,完整代码
    Mybatis用法小结
    springMVC中传值的时候的乱码问题
    MAVEN安装过程
    树形结构的数据库表Schema设计
    SpringMVC的工作原理
    页面底部的回到顶部的按钮实现
    鼠标放上去,div高度随文字增加,并显示剩余的文字。
    freeMarker中list的两列展示
    html的textarea控制字数小案例
  • 原文地址:https://www.cnblogs.com/tootooman/p/8954530.html
Copyright © 2011-2022 走看看