• Python入门基础知识点(基础数据类型之字典)


    基础数据类型:

    列表的缺点:
    1,列表如果存储的数据比较多,那么他的查询速度相对慢。
    2,列表存储的数据关联性不强。

    字典dict:

          字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

    字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

         python中唯一的映射类的数据,花括号{}括起来,他是以键值对形式存储,每一对键值对以逗号隔开的。例:        {'name': '太白金星', 'age': 18, 'sex': 'man'}

    
     数据类型的划分:
                 容器非容器划分:
                        容器型数据类型:list,tuple,dict,set。
                        非容器型数据类型:int str bool
    
                 可变与不可变划分:
                        可变(不可哈希hash)的数据类型:list dict,set
                        不可变(可哈希hash的)的数据类型: int bool str tuple
                                            对数据本身变化:
                                            i = 100
                                            i = 90

    字典是以键值对形式存储的,
    键:不重复的,唯一的,键的数据类型必须是不可变的数据类型。
    值:任意数据类型,对象。
    字典可以存储大量的键值对数据,
    python3.5包括3.5之前:字典是无序的。
    python3.6之后,字典变成有序的。
    字典的优点:
    1,字典存储大量的关系型数据。
    2,字典的查询速度非常快

    缺点: 占用空间比较大.

            增:
                # 有则修改,无责增加
                dic['name'] = 'alex'
                # 有责不变,无责增加
                dic.setdeafult(key,value)
    
    
            删:
                pop 按照key删除,返回值value
                popitem 删除最后一个.返回值,是一个元组 (key,value)
                clear()
                del dic[key]
                del dic
    
    
    
            改: dic['name'] = 'alex'
                dic.update(name='alex',age=73)
                dic.update(dic1)
    
            查:
                dic[key] 没有此键 报错
                dic.get(key) 有就返回,没有就返回None
                dic.get(key,'返回值')
                dic.keys() values()  items()
    dic = {
        'name_list': ['博哥', '菊哥', 'b哥', 'alex'],
        'barry': {
            'name': '太白金星',
            'age': 18,
            'hobby': 'wife',
        }
    }
    
    # 1,给这个列表['博哥', '菊哥', 'b哥', 'alex'] 追加一个元素 '老男孩'。
    # l1 = dic['name_list']
    # # print(l1)
    # l1.append('老男孩')
    # print(dic)
    
    # 简写;
    # dic['name_list'].append('老男孩')
    # print(dic)
    # 2,将这个列表['博哥', '菊哥', 'b哥', 'alex']中的alex变成首字母大写。
    # print(dic['name_list'][-1].capitalize())
    # dic['name_list'][-1] = dic['name_list'][-1].capitalize()
    # print(dic)
    # 3,将这个键值对 'name': '太白金星' 的 '太白金星' 改成男神。
    # 先通过dic 找到小字典
    # print(dic['barry'])
    # 在通过小字典将name 对应的值更改
    # dic['barry']['name'] = '男神'
    # print(dic)
    # 4,给barry对应的小字典增加一个键值对: weight: 160
    # dic['barry']['weight'] = 150
    # print(dic)

    例题:

     

    # av_catalog = {"欧美": {"www.太⽩.com": ["很多免费的,世界最⼤的", "质量⼀般"], "www.alex.com": ["很多免费的,也很⼤", "质量⽐yourporn⾼点"],
    #                      "oldboy.com": ["多是⾃拍,⾼质量图⽚很多", "资源不多,更新慢"], "hao222.com": ["质量很⾼,真的很⾼", "全部收费,屌丝请绕过"]},
    #               "日韩": {"tokyo-hot": ["质量怎样不清楚,个⼈已经不喜欢⽇韩范了", "verygood"]},
    #               "大陆": {"1024": ["全部免费,真好,好⼈⼀⽣平安", "服务器在国外,慢"]}
    #               }
    
    
    # a, 给此["很多免费的,世界最⼤的", "质量⼀般"]列表第⼆个位置插⼊⼀个元素:'量很 ⼤'。
    # av_catalog["欧美"]["www.太⽩.com"].insert(1,"量很 ⼤")
    # print(av_catalog)
    # b, 将此["质量很⾼,真的很⾼", "全部收费,屌丝请绕过"]列表的"全部收费,屌丝请绕过"删除。
    # av_catalog["欧美"]["hao222.com"].pop(1)
    # print(av_catalog)
    # c, 将此["质量怎样不清楚,个⼈已经不喜欢⽇韩范了", "verygood"]列表的"verygood"全部变成⼤写。
    # av_catalog["日韩"]["tokyo-hot"][1]=av_catalog["日韩"]["tokyo-hot"][1].upper()
    # print(av_catalog)
    # d, 给'⼤陆'对应的字典添加⼀个键值对'1048': ['⼀天就封了']
    # av_catalog["大陆"]["1048"]= ['⼀天就封了']
    # print(av_catalog)
    # e, "oldboy.com": ["多是⾃拍,⾼质量图⽚很多", "资源不多,更新慢"],删除此键值对
    # av_catalog["欧美"].pop('oldboy.com')
    # print(av_catalog)
    # f, 给此["全部免费,真好,好⼈⼀⽣平安", "服务器在国外,慢"]列表的第⼀个元素,加上 ⼀句话:'可以爬下来'
    # av_catalog["大陆"]["1024"][0]="全部免费,真好,好⼈⼀⽣平安,可以爬下来"
    # print(av_catalog)
    # 4.有字符串"k: 1|k1 :2|k2:3 |k3 :4" 处理成字典 {'k':1,'k1':2....} (升级题)
    s1 = "k: 1|k1 :2|k2:3 |k3 :4"
    # {'k':1,'k1':2....}
    # dic = {}
    # l1 = s1.split('|')  # ['k: 1', 'k1 :2', 'k2:3 ', 'k3 :4']
    # for i in l1:
    #     # print(i)  # 'k: 1'
    #     small_list = i.split(':')
    #     # print(small_list)
    #     key,value = small_list
    #     # print(key,value)
    #     dic[key.strip()] = int(value)
    # print(dic)
     6.输出商品列表,⽤户输⼊序号,显示⽤户选中的商品
    # 商品列表:
    
    goods = [{"name": "电脑", "price": 1999},
        {"name": "鼠标", "price": 10},
        {"name": "游艇", "price": 20},
        {"name": "美女", "price": 998}, ]
    # 要求:
    # 1:⻚⾯显示 序号 + 商品名称 + 商品价格,如:
    # 1 电脑 1999
    # 2 ⿏标 10
    #
    # for i in goods:
    #     print(i['name'], i['price'])
    
    # while 1:
    #     for index in range(len(goods)):
    #         print('{}	{}	{}'.format(index+1,goods[index]['name'],goods[index]['price']))
    #     goods_num = input('请输入选项:输入q或者Q退出程序').strip()
    #
    #     if goods_num.isdigit():
    #         goods_num = int(goods_num)
    #         if 0 < goods_num <= len(goods):  # 2
    #             print(goods[goods_num-1]['name'],goods[goods_num-1]['price'])
    #         else:
    #             print('您输入的超出范围,请重新输入')
    #     elif goods_num.upper() == 'Q':
    #         break
    #     else:
    #         print('你输入的有非数字元素,请重新输入')
    
    
    # 选项几个可能
    # 1,英文. 输入错误,重新输入.
    # 1.1 q 或者Q 退出程序,就是退出循环,.
    # 2,100 超出范围,不行.
    # 3, 1~ 4才可以.
    # 2:⽤户输⼊选择的商品序号,然后打印商品名称及商品价格
    
    # 3:如果⽤户输⼊的商品序号有误,则提示输⼊有误,并重新输⼊。
    
    # 4:⽤户输⼊Q或者q,退出程序。
    goods = [{"name": "电脑", "price": 1999},
    {"name": "⿏标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美⼥", "price": 998}, ]

    for num in range(len(goods)):
    print(num+1,goods[num]["name"],goods[num]["price"])
    while True:
    num = input("请输入所选商品的序号>>>: ").strip()
    if num=="Q" or num=="q":
    break
    num=int(num)
    if num in range(len(goods)+1):
    print(num,goods[num-1]["name"],goods[num-1]["price"])
    break
    else:
    print("输⼊有误")
     
  • 相关阅读:
    赫夫曼树JAVA实现及分析
    JAVA多线程之wait/notify
    JAVA多线程之volatile 与 synchronized 的比较
    JAVA多线程之线程间的通信方式
    并查集与贪心算法的应用之求解无向图的最小生成树
    Android自定义图形,图形的拼接、叠加、相容
    CSDN问答频道“华章杯”7月排行榜活动开始,丰厚奖品等你拿
    修改MyEclipse内存-------OutOfMemoryError错误
    MySQL中MySQL X.X Command Line Client一闪而过的问题
    C++组合问题
  • 原文地址:https://www.cnblogs.com/sikuaiqian/p/10492405.html
Copyright © 2020-2023  润新知