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

    字典

     

    字典的定义及创建

     

    定义及特性:python语言中唯一的映射数据类型,是一种key:value结构,键值之间用冒号,各个键之间用逗号隔开。

    • 字典是无序的
    • 字典是可变数据类型
    • key必须是可哈希,也就是不可变数据类型,唯一
    • 寻址速度快,效率高。因为键是可哈希的,取值时带上key,内部会通过哈希算法转化为数字。找到与该数字对应的key
     

    创建:

    In [13]:
    # 一
    dic = {'name':'江子牙','age':21}
    print(dic,type(dic))
    
    # 二
    dic1 = dict(name='江子牙',age=21)
    print(dic1)
    
    # 三
    dic2 = {}
    print(dic2,type(dic2))
    
     
    {'name': '江子牙', 'age': 21} <class 'dict'>
    {'name': '江子牙', 'age': 21}
    {} <class 'dict'>
    
     

    字典的增删改查及常用方法:

    In [24]:
    # 增加
    
    dic = {'name':'江子牙','age':21}
    
    # 存在则修改,不存在,则添加
    dic['sex'] = '男'
    print(dic)
    
    dic.setdefault('closed','停用')
    print(dic)
    # 存在key,不做任何改变。不存在则添加。
    dic.setdefault('name','小喵喵')
    print(dic)
    
     
    {'name': '江子牙', 'age': 21, 'sex': '男'}
    {'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'}
    {'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'}
    
    In [40]:
    # 删除
    dic = {'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'}
    
    # 有返回值  没有key时就会报错  最好在后面加None
    dic.pop('closed')  
    print(dic)
    
    
    # 随机删除  返回(key,value)  无意义
    res = dic.popitem() 
    print(res)
    print(dic)
    
    # del  不存在就会报错
    del dic['name']
    print(dic)
    
    # clear()  清空字典
    dic.clear()
    print(dic)
    
    dic1 = {'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'}
    print(dic1.pop('删除','不存在'))
    dic1.pop('删除')
    
    # 总结:最好通过pop来删除 不存在时可以通过设置返回值还不会报错
    
     
    {'name': '江子牙', 'age': 21, 'sex': '男'}
    ('sex', '男')
    {'name': '江子牙', 'age': 21}
    {'age': 21}
    {}
    不存在
    
     
    ---------------------------------------------------------------------------
    KeyError                                  Traceback (most recent call last)
    <ipython-input-40-9da8cbd17f61> in <module>
         22 dic1 = {'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'}
         23 print(dic1.pop('删除','不存在'))
    ---> 24dic1.pop('删除')
    
    KeyError: '删除'
    In [47]:
    # 改
    
    # update()
    d1 = {'name':'alex','age':18}
    d2 = {'name':'','sex':1,'age':22}
    d2.update(d1)
    
    # 覆盖添加
    print(d2)
    
    d2.update(name=1,age=2)
    print(d2)
    
    d2.update({'sex':'男'})
    print(d2)
    
     
    {'name': 'alex', 'sex': 1, 'age': 18}
    {'name': 1, 'sex': 1, 'age': 2}
    {'name': 1, 'sex': '男', 'age': 2}
    
    In [53]:
    # 查
    
    d = {'name': '江子牙', 'age': 21, 'sex': '男'}
    print(d.keys())    # 返回列表
    print(d.values())  # 返回列表
    print(d.items())   # 返回列表,里面是元祖
    
    print(d.get('name'))
    print(d.get('aaa'))
    print(d.get('aaa','不存在'))
    
    # 可通过for循环来对上述结果来进行查询。
    
    for key in d:
        print(key)
        
    for key in d.keys():
        print(key)
        
    for key,value in d.items():
        print(key,value)
    
    总结首选get
    
     
    dict_keys(['name', 'age', 'sex'])
    dict_values(['江子牙', 21, '男'])
    dict_items([('name', '江子牙'), ('age', 21), ('sex', '男')])
    江子牙
    None
    不存在
    name
    age
    sex
    name
    age
    sex
    name 江子牙
    age 21
    sex 男
    
  • 相关阅读:
    Codeforces Round #595 (Div. 3) C题题解
    Educational Codeforces Round 83 (Rated for Div. 2)
    【算法竞赛进阶指南】Supermarket 贪心+并查集
    【算法竞赛进阶指南】字典树 The XOR Longest Path
    【算法竞赛进阶指南】字典树 The XOR Largest Pair
    【算法进阶指南】双端队列 DP+思维
    【算法进阶指南】蚯蚓 队列
    【2019 杭电多校第一场】Path 最短路+最小割
    【2017 ICPC 沈阳】G.Infinite Fraction Path 暴力优化
    【2017 CCPC 秦皇岛】A.Balloon Robot 思维
  • 原文地址:https://www.cnblogs.com/xjmlove/p/10127213.html
Copyright © 2011-2022 走看看