Dict

字典

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据,查询速度快。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。

可哈希表示key必须是不可变类型,如:数字、字符串、元组。

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

数据类型分类:
可变数据类型(不可哈希):list,dict,set。
不可变数据类型(可哈希):int,bool,str,tuple.
字典的键:不可变数据类型。
字典的值:任意数据类型。
容器类型:
  容器类(承载各种数据类型):list,tuple,dict。.
字典的键是唯一的。
字典的顺序:
  3.5之前,字典是无序的。
  3.6开始,字典创建的时候,按照一定的顺序插入的数值,看起来是有序的。

字典的方法

dic = {"name":"jin",
       "age":18,
       "sex":"male",}

# 字典的增
# 第一种:有则覆盖,无则增加
dic['hobby'] = 'girl'
print(dic)
# 第二种:有则不变,无则增加
dic.setdefault('hobby') # 无value时默认为None
dic.setdefault('hobby', 'girl')

# 字典的删 
dic.pop(key, None)  # 有返回值,为删除的value,无则报错
dic.popitem() # 随机删除,有返回值
dic.clear() # 清楚字典
del dic[key] # 删除字典或按key删除

# 字典的改
dic['name'] = 'alex'
print(dic)

dic2 = {"name":"alex","weight":75}
dic.updata(dic2) # 将dic2迭代添加并覆盖dic里已有的

# 字典的查
print(dic['name']) # 无则报错

print(dic.get('name'))#无则返回None(可以自定义返回内容)
# 其他方法
dic = {"name":"jin",
       "age":18,
       "sex":"male"}

print(dic.keys())
dict_keys(['name', 'age', 'sex'])

print(dic.values())
dict_values(['jin', 18, 'male'])

dic.keys()和dic.vaues()可以for循环里面的元素
for i in dic = for i in dic.keys()
li = list(dic.keys()) # 变成列表


print(dic.items())
dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])
for k, v in dic.items():
    print(k, v)

概念:分别赋值

a = 4
 b = 5
 a, b = b, a
 print(a,b)

字典的嵌套

dic = {"name_list":['张三','lisi','隔壁王叔叔'],
          'dic2':{'name':'太白','age':12}
         }   
# 1 ,给列表追加一个元素:'旺旺'
dic['name_list'].append('旺旺')
print(dic)

#,2,给列表lisi全部大写
dic['name_list'][1] = dic['name_list'][1].upper()
print(dic)

#3,给dic2 对应的字典添加一个键值对:hobby:girl
dic['dic2']['hobby'] = 'girl'
print(dic) 

 课后作业

# 4、有字符串"k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....}
s = 'k:1|k1:2|k2:3|k3:4'
dic = {}
s = s.split('|')
for i in s:
    i = i.split(':')
    dic[i[0]] = i[1]
print(dic)

5、元素分类

    有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}

 

li= [11,22,33,44,55,66,77,88,99,90]
dic = {}
dic['k1'] = []
dic['k2'] = []
for i in li:
    if i >= 66:
        dic['k1'].append(i)
    else:
        dic['k2'].append(i)
print(dic)

 

6、输出商品列表,用户输入序号,显示用户选中的商品

    商品 li = ["手机", "电脑", '鼠标垫', '游艇']

要求:1:页面显示 序号 商品名称,如:

       1 手机

     2 电脑

       …

      2 用户输入选择的商品序号,然后打印商品名称

      3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。

    4:用户输入Q或者q,退出程序。

 

li = ["手机", "电脑", '鼠标垫', '游艇']
shopping_cart = []
for i, name in enumerate(li, 1):
    print(i, name)
while True:
    choice = input('请选择商品序号:').strip()
    if choice.upper() == 'Q':
        print('----------您已购买以下商品----------')
        for k in shopping_cart:
            print(k)
        break
    if choice.isdigit() and int(choice) <= len(li):
        choice = int(choice)
        shopping_cart.append(li[choice-1])
        print(li[choice-1])
    else:
        print('您输入有误,请重新输入!')

 

posted @ 2018-03-22 15:35  戏院小二胡  阅读(103)  评论(0编辑  收藏  举报