zoukankan      html  css  js  c++  java
  • 5,字典,(字典的嵌套)

    字典

    基础数据类型之一,{} 以键值对的形式存储数据。

    ***

    key:value 形式,映射,存储的大量的关系型数据。

    字典的key,必须是不可变的数据类型,是唯一的。

    字典的value,可以是任意数据类型。

    dic = {'name': '老男孩','age': 56,'hobby': 'women',}
    print(dic.keys())
    print(dic.values())
    print(dic.items())

    print(type(dic.values()))
    print(type(dic.keys()))
    print(type(dic.items()))
    结果:

    dict_keys(['hobby', 'name', 'age'])
    dict_values(['women', '老男孩', 56])
    dict_items([('hobby', 'women'), ('name', '老男孩'), ('age', 56)])


    <class 'dict_values'>
    <class 'dict_keys'>
    <class 'dict_items'>

     

      

    ***

    字典在python3.5(包含3.5)之前都是无序的。

    但是在python3.6以后是有序的。

    字典的查询速度非常快,存储着大量关系型数据。

    字典的查询方式:

      通过hash算法,字典的键通过hash表,转换成数字,采用的是二分查找查询数字。

    ***

    数据类型的分类:
    可变(不可哈希hash):list,dict,set, 
    不可变(可哈希hash):str,tuple,int,bool 

    ***

    容器类(3种)

      list,dict,tuple,

    非容器类(3种)

      int,bool,set

    ***

    字典:(增删改查)

    增:

    dic = {'name': '老男孩','age': 56,'hobby': 'women',}
    dic['name'] = 'hahah' #有责覆盖,无责添加。
    print(dic)
    答案:
    {'age': 56, 'hobby': 'women', 'name': 'hahah'}
    dic['aaa'] = 'ccc'  #默认添加到最后
    print(dic)

    dic.setdefault('name1','老男孩1') #有责不变,无责添加。
    print(dic)

     删:

    dic = {'name': '老男孩','age': 56,'hobby': 'women',}
    print(dic.pop('name')) #删除键值对(返回删除的‘值’)
    print(dic.pop('aledd','没有此值')) #如果没有要删除的key,在字典里,责返回删除的value。没在字典里,则返回None

    dic.clear() 清空字典
    print(dic)
     
    print(dic.popitem()) #随机删除,有返回值,返回值为元祖,里面是删除的键值对。
    print(dic)
    del dic #删除字典
    print(dic)

    del dic['name'] #按照键,删除键值对。
    print(dic)

    改:

    dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
    dic['name'] = 'alex'# 有则覆盖,没有就添加
    print(dic)

    dic = {"name": "jin", "age": 18, "sex": "male"}
    dic2 = {"name": "alex", "weight": 75}
    dic2.update(dic) #将dic里面的所有键值对,覆盖添加到dic2中,dic不变。
    print(dic)
    print(dic2)


     查:

    dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'}
    print(dic['name']) #查看键 ,找不到会报错
    print(dic.get('name1')) 查看键,找不到返回None
    print(dic.get('name1','没有此键值对'))#可自定义值返回的内容,有责返回值,无责返回自定义值。

    for循环

    dic.keys():键

    dic.value():值

    dic.items():循环键值对

    dic = {'name': '老男孩','age': 56,'hobby': 'women',}
    for i in dic.keys():循环字典中的键
        print(i)
    
    for i in dic.values():#循环字典中的值
        print(i)
    
    for k,v in dic.items():#循环字典中的键值。
        print(k,v)

    分别赋值概念

    a = 1
    b = 3
    a,b = b,a
    print(a,b)
    3 1
    字典的嵌套
    dic = {
        'name_list': ['碗蓉', '俊俊', '爽妹'],
        'status': None,
        'personal_msg': {
            'name': '反面教材',
            'age': 25,
            'hobby_list': ['抽烟', '喝酒', '烫头'],
        }
    }
    
    # 1,给dic添加一个键值对,学校:老男孩
    # dic['学校'] = '老男孩'
    # print(dic)
    # 2,将status对应的值改成True
    # dic['status'] = True
    # print(dic)
    # 3,给name_list对应的列表追加一个元素:平平
    # dic['name_list'].append('平平')
    # print(dic)
    # 4,给personal_msg对应的字典添加一个键值对sex:男
    # dic['personal_msg']['sex'] = '男'
    # print(dic)
    # 5,将hobby_list 对应的列表中的烫头改成唱歌。
    # dic['personal_msg']['hobby_list'][2] = '唱歌'
    # print(dic)
    dic = dict.fromkeys('abv',777)
    将abv,分别以字典的形式迭代添加到最后。






  • 相关阅读:
    asp.net mvc @RenderBody()的问题
    (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
    Spring配置错误 No adapter for IAdvice of type
    java之路 super
    java之路 static
    java之路 构造代码块注意事项
    java之路 面向对象基础
    Node.js系列02
    Node.js 系列01
    王垠:《程序员的心理疾病》
  • 原文地址:https://www.cnblogs.com/ZJGG/p/8985712.html
Copyright © 2011-2022 走看看