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('{}\t{}\t{}'.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("输⼊有误")
 

 

posted @ 2019-03-07 21:16  四块钱  阅读(280)  评论(0编辑  收藏  举报
ヾ(≧O≦)〃嗷~