• 字典


    字典:

    基础数据类型之一,{}以键值对的形式存储数据。
    dic = {'name':'Laonanhai','age':45}
    以Key:value形式,映射,存储的大量的关系型数据。
    关系型数据:
    dic = {'name':'laonanhai',
    'age':'45',
    'name_list':['反面教材','俊俊',...]
    }
    数据类型的分类
    可变(不可哈希hash):
    不可变(可哈希hash):
    容器类:
    容器类的数据类型:list,tuple,dict,l1 =[11,22,33,[44,55]]
    非容器类的数据类型;str,int,bool.s1 = '[11,22,33]'
    字典的key必须是不可变的数据类型,是唯一的
             hash算法:
    字典的键通过hash表转换成数字,采用二分查找查询数字。
    字典的value可以是任意数据类型。
    字典的查询速度非常快,存储的大量的关系型数据。
    字典在python3.5包含3.5之前都是无序,但3.6之后是有序的
    。

    键唯一:

    dic = {
              'name' = 'alex'
              'name'='Wusir'
      }
    print(dic)
    字典的键必须是不可变得可哈希的数据类型:
    dic = {
            'name' : 'alex'
            [1,2,3] : 'values',
    }
    print(dic)   #报错 键必须是不可变的

    字典的增删改查:

    1. 有则覆盖,无则添加
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    dic['sex'] = 'LaddyBoy'
    print(dic)       # (在后面追加)
    dic['name'] = 'Alex'
    print(dic)   有则覆盖,没有就添加     
    {'name': 'Alex', 'age': 56, 'hobby': 'women'}
    View Code
     2.setdefault有则不变,无则添加  
    dic = {'name':'老男孩','age':56,'hobby':'women'} 
    setdefault('sex')
    print(dic)  有键没有值(None)不报错
    dic.setdefault('sex','Laddboy')
    print(dic)
    dic.setdefault('name','alex')
    print(dic)    有则不变,无则添加  
    {'name': '老男孩', 'age': 56, 'hobby': 'women'}
    View Code
    1,POP   按键删  有返回值,返回的是键对应的值
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    print(dic.pop('age'))  #(56)有返回值,返回的是键对应的值
    print(dic.pop('age1','没有此键...'))
    View Code
    2.clear()   清空字典
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    dic,clear
    print(dic)
    View Code
    3.popitem   随机删除,有返回值,返回值为元组,里面是删除的键值对
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    print(dic.popitem())  #随机删除,有返回值,返回值为元组,里面是删除的键值对
    print(dic)
    View Code
    4.del
    1,删除整个字典(在内存级别删除)
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    del dic
    View Code
    2.按照键删除键值对
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    del dic['name']
    print(dic)
    View Code
    1.有则覆盖,没有就添加
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    dic['name'] = 'Alex' #有则覆盖,没有就添加
    print(dic)
    View Code
    2.update两个字典的更新
    dic = {'name':'jin','age':18,'sex':'male'}
    dic2 = {'name':'alex','weight':75}
    dic2.update(dic)#将dic里面的所有键值对覆盖添加到dic2中,dic不变
    print(dic) #{'name':'jin','age':'18','sex':'male'}
    print(dic2)#{'name':'jin','weight':'75','age':'18','sex':'male'}
    View Code
    1.利用键去查(无此键报错)
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    dic['name']
    print(dic['name'])       #(老男孩)
    View Code
    2.get  (无此键默认返回None,可设置返回值)m
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    dic.get('name')
    print(dic.get('name'))
    print(dic.get('name1'))
    print(dic.get('name1','sb没有此键'))
    View Code
    3.for循环查询
    dic = {'name':'老男孩','age':56,'hobby':'women'}
    dic.keys(), dic.values(), dic.items()  #类似于list但不是list的类型,没有索引。可遍历。
    print(dic.keys(),type(dic.keys()))
    for key in dic.keys():
        print(key)
    l_key = list(dic.keys())
    print(l_key)
    for value in dic.values():
        print(value)
    
    
    l_value = list(dic.values())
    print(l_value)
    print(dic.items())
    k,v = ('name', '老男孩')
    for k,v in dic.items(): # [('name', '老男孩'), ('age', 56), ('hobby', 'women')]
    print(k,v)
    View Code
    分别赋值概念
    a, b = 1, 2
    a, b = ('alex', '34')
    a, b = ['alex', '34']
    有 如下 a = 1 b = 3,用一行代码将a b值互换。
    a = 1
    b = 3
    a, b = b, a
    print(dic.items())
    for i in [22,33,44]:
        print(i)
    for i in [(11,22),(33,44),(55,66)]:
        print(i)
    字典的嵌套
    dic = {
        'name_list': ['碗蓉', '俊俊', '爽妹'],
        'status': None,
        'personal_msg': {
            'name': '反面教材',
            'age': 25,
            'hobby_list': ['抽烟', '喝酒', '烫头'],
        }
    }
    1,给dic添加一个键值对,学校:老男孩
    dic['学校'] = '老男孩'
    print(dic)
    #{'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': {'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头']}, '学校': '老男孩'}
    2,将status对应的值改成True
    dic['status'] = True
    print(dic)
    {'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': True, 'personal_msg': {'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头']}}
    3,给name_list对应的列表追加一个元素:平平
    print(dic['name_list'])
    dic['name_list'].append('平平')
    print(dic)
    ['碗蓉', '俊俊', '爽妹']
    {'name_list': ['碗蓉', '俊俊', '爽妹', '平平'], 'status': None, 'personal_msg': {'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头']}}
    4,给personal_msg对应的字典添加一个键值对sex:男
    dic2 = dic['personal_msg']
    dic2['sex'] = ''
    print(dic)
    dic['personal_msg']['sex'] = ''
    print(dic)
    {'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': {'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], 'sex': ''}}
    5,将hobby_list 对应的列表中的烫头改成唱歌。
    dic['personal_msg']['hobby_list'][-1] = '唱歌'
    print(dic)
    {'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': {'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '唱歌']}}
    View Code

    练习题:

    1、有字符串"k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....}
    li = 'k:1|k1:2|k2:3|k3:4'.split('|')
    dic = {}
    for i in li:
        i = i.split(':')
        dic.setdefault(i[0],int(i[1]))
    print(dic)
    View Code
    2、元素分类
        有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
    dic = {'k1': [], 'k2': []}
    li= [11,22,33,44,55,66,77,88,99,90]
    for i in li:
        if i <66:
    #         # dic.setdefault('k2',[]).append(i)
            dic['k2'].append(i)
        elif i >66:
        # else:
    #         dic.setdefault('k1',[]).append(i)
            dic['k1'].append(i)
    print(dic)
    View Code
    3、输出商品列表,用户输入序号,显示用户选中的商品
     商品 li = ["手机", "电脑", '鼠标垫', '游艇']
    要求:1:页面显示 序号 + 商品名称,如:
              1 手机
         2 电脑
    2: 用户输入选择的商品序号,然后打印商品名称
    3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    4:用户输入Q或者q,退出程序。
    li = ["手机", "电脑", '鼠标垫', '游艇']
    while True:
        for i in range(len(li)):
            print('{}	{}'.format(i + 1, li[i]))
        msg = input("请输入商品序号:(退出:Qq)").strip() # 1a
        if msg.upper() == 'Q':
            print("欢迎使用!")  # 加一个购买的商品展示
            break
        elif msg.isdigit():
            msg = int(msg)
            if 0 < msg <= len(li):
                print("您选择的商品是:%s" % li[msg-1])
    
            else:
                print("您选择的商品序号有误,请重新输入!")
        else:
            print("您选择的商品序号中包含非数字字符,请重新输入!")
    View Code
  • 相关阅读:
    Entity Framework Code First 模式-建立一对一联系
    Entity Framework Code First 模式-建立一对多联系
    sqllocaldb
    NuGet 命令行使用EntityFrameWork
    c# 中反射里的invoke方法的参数
    在js中使用Razor
    一个页面上调用多个setInterval失效解决办法(使用于同一时间间隔)
    Echart使用过的属性总结
    VS注释与取消注释快捷键
    hibernate的强转类型
  • 原文地址:https://www.cnblogs.com/ls13691357174/p/9094078.html
Copyright © 2020-2023  润新知