Python字典操作及课后练习

'''
dict,唯一一个映射数据类型
数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,bool int str(对str的任何改变都是形成了新的str,对原来的str没有改变)
可变数据类型:list,dict,set
dict key 必须是不可变数据类型,可哈希,元祖bool,int,str
     value: 任意数据类型;
dict 优点: 二分查找去查询
           存储大量的关系型数据
     特点:无序的

字典的增:
dict1={}
dict1['high'] = 185  没有键值对,添加 
dict1['high']=160   如果有键值对,则值覆盖

dict1.setdefault('weight',150)   有键值对,不做任何改变;没有才添加

删除:
print(dic1.pop('age'))  有返回值,按键去删除
print(dic1.pop('age',None))  没有这个键的话,则返回None
print(dic1) 

dic1.popitem()   将最后一个删除
print(dict1)
del删除字典;clear()清空字典表

改: 
dic2.update(dic1)  将dic1的键值对添加到dic2中

查:
dict1.keys()字典的键  dict1.values()字典的值  .items()里面是元组,元祖里面是键值
当什么都不写时,打印输出的是键

面试题:
a=1  b=2  用一行代码转换a,b的值
a,b = b,a
print(a,b)

字典赋值:
for k,v in dic1.items():
    print(k,v)

同样得到键值对,首选get方法!!!
v1 = dic1['name']   键值不存在可能会报错
v2 = dic1.get('name1','没有这个键')  键值不存在时不会报错,会返回自定义的信息或者None


dict嵌套
在字典的嵌套字典中添加键值对
dic = {
    'name':['alex','wusir','taibai'],
    'py9':{
        'time':'1213',
        'learn_money':19800,
        'addr':'CBD',
           },
    'age':21
}

练习题1:

# 字典练习题
# 1、元素分类
#有如下值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 = {}
# 大于66的所有值列表
li_more = []   
# 小于66的所有值列表
li_less = []
for i in li:
    if i == 66:
        continue
    elif i>66:
        li_more.append(i)
    else:
        li_less.append(i)
dic['k1'] = li_more
dic['k2'] = li_less

练习题2:
 输出商品列表,用户输入序号,显示用户选中的商品
    商品 li = ["手机", "电脑", '鼠标垫', '游艇']
要求:1:页面显示 序号 + 商品名称,如:
          1 手机
           2 电脑
              …
     2: 用户输入选择的商品序号,然后打印商品名称
  3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序。

li = ["手机", "电脑", '鼠标垫', '游艇']
while 1:
    for i in li:
        print('{}\t\t{}'.format(li.index(i)+1,i))
    # break
    buy = input("输入自己想要的序号,输入q或Q退出:\n")
    if buy.isdigit():
        # pass
        if int(buy) in range(1,5):
            print("想要的是{0}:{1}".format(int(buy),li[int(buy)-1]))
        else:
            print("请输入指 定商品范围的数字!")
    elif buy.upper() == 'Q':
        break
    else:
        print("请输入数字!")

总结:

1.format的格式化操作;

2.通过列表.index来取索引下标;

3.isdigit()的使用;

4..upper的使用

猜你喜欢

转载自blog.csdn.net/qq_29027865/article/details/81571329