zoukankan      html  css  js  c++  java
  • Python基础学习07--字典

    字典

    字典是一种组合数据,没有顺序的组合数据,数据以键值对形式出现

    字典中的数据每个都有键值对组成,即kv对

    • key: 必须是可哈希的值,比如int,string,float,tuple;但是list,set,dict 不行
    • value: 任何值

     

    创建字典

    # 创建空字典
    dict1 = {}
    print('dict1的数据类型为:',type(dict1))
    print('dict1 :',dict1)
    
    # 创建存在数据的字典
    dict2 = {1:'Apple',2:'OnePlus'}
    print('dict2 :',dict2)
    
    # 创建多嵌套字典
    dict3 = {'area':'beijing','user':{'user1':{'name':'wilson','tel':13800},'user2':{'name':'tom','tel':138000}}}
    print('dict3的数据类型为:',type(dict3))
    print('dict3 :',dict3)

    输出结果如下:

    dict1的数据类型为: <class 'dict'>
    dict1 : {}
    
    dict2 : {1: 'Apple', 2: 'OnePlus'}
    
    dict3的数据类型为: <class 'dict'>
    dict3 : {'area': 'beijing', 'user': {'user1': {'name': 'wilson', 'tel': 13800}, 'user2': {'name': 'tom', 'tel': 138000}}}

    上面的多嵌套字典可以看出,输出结果较长,查看较为困难,这时候需要导入pprint模块,方面查看数据

    import pprint
    dict4 = {'area':'beijing','user':{'user1':{'name':'wilson','tel':13800},'user2':{'name':'tom','tel':138000}}}
    pprint.pprint(dict4)

    输出格式如下:

    {'area': 'beijing',
     'user': {'user1': {'name': 'wilson', 'tel': 13800},
              'user2': {'name': 'tom', 'tel': 138000}}}

    访问字典数据

    # 查看key为1的值
    dict5 = {1:'Apple',2:'OnePlus'}
    print('key为1的值 :',dict5[1])
    
    # 查看user2的tel值
    dict6 = {'area':'beijing','user':{'user1':{'name':'wilson','tel':13800},'user2':{'name':'tom','tel':138000}}}
    print('user2的tel值 :',dict6['user']['user2']['tel'])

    输出结果如下:

    key为1的值 : Apple
    
    user2的tel值 : 138000

    更改字典中的值

    dict7 = {1:'Apple',2:'OnePlus'}
    print('dict7-前 :',dict7)
    
    dict7[2] = 'Iphone'     # 修改key=2的值为'Iphone'
    print('dict7-后 :',dict7)

    输出结果如下:

    dict7-前 : {1: 'Apple', 2: 'OnePlus'}
    dict7-后 : {1: 'Apple', 2: 'Iphone'}

    删除字典元素

    dict8 = {1:'Apple',2:'OnePlus'}
    print('dict8-前 :',dict8)
    
    del dict8[2]            # 删除key=2的键值对
    print('dict8-后 :',dict8)

    输出结果如下:

    dict8-前 : {1: 'Apple', 2: 'OnePlus'}
    dict8-后 : {1: 'Apple'}

    成员检测--in , not in

    成员检测检测的是key内容

    dict9 = {1:'Apple',2:'OnePlus'}
    
    print('1 在字典中:',1 in dict9)           # 检测 1 是否在dict9中
    print('Apple在字典中:','Apple' in dict9)  # 检测 Apple 是否在dict9中 

    输出结果如下:

    1 在字典中: True
    Apple在字典中: False 

     字典的常用方法

    1、item()

        以列表返回可遍历的(键, 值) 元组数组

    dict10 = {1:'Apple',2:'OnePlus'}
    
    d1 = dict10.items()
    
    print('d1的数据类型:',type(d1))
    print('d1 :',d1)
    d1的数据类型: <class 'dict_items'>
    d1 :  dict_items([(1, 'Apple'), (2, 'OnePlus')])

    2、keys

        返回一个迭代器,可以使用 list() 来转换为列表

    dict10 = {1:'Apple',2:'OnePlus'}
    
    d2 = dict10.keys()
    
    print('d2的数据类型:',type(d2))
    print('d2 :',d2)
    d2的数据类型: <class 'dict_keys'>
    d2 : dict_keys([1, 2])

    3、keys()

        返回一个迭代器,可以使用 list() 来转换为列表

    dict10 = {1:'Apple',2:'OnePlus'}
    
    d3 = dict10.values()
    
    print('d3的数据类型:',type(d3))
    print('d3 :',d3)
    d3的数据类型: <class 'dict_values'>
    d3 : dict_values(['Apple', 'OnePlus'])

    4、get()

        返回指定键的值,如果值不在字典中返回默认值。

    dict10 = {1:'Apple',2:'OnePlus'}
    
    d4 = dict10.get(1)
    d5 = dict10.get(3,None)
    
    print('1 的值为 :',d4)
    print('3 的值为 :',d5)
    1 的值为 : Apple
    3 的值为 : None
  • 相关阅读:
    LeetCode -- Rectangle Area
    【转】VS常用快捷键
    C++中include<> 与 include" " 的区别
    浅析_tmain() 与 main() 函数的区别
    VS2013下配置OpenCV 3.0.0 &&& VS2013下配置Opencv2.4.9
    LeetCode -- Valid Parenthese
    杂想 · 警醒
    LeetCode -- Length of Last Word
    LeetCode -- Valid Sudoku
    LeetCode -- Binary Tree Level Order Traversal II
  • 原文地址:https://www.cnblogs.com/wilson-5133/p/10352008.html
Copyright © 2011-2022 走看看