博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字典操作学习小结
阅读量:4991 次
发布时间:2019-06-12

本文共 4182 字,大约阅读时间需要 13 分钟。

字典操作: 
 字典是一种key-value的数据类型,
 
 字典的特性:
 dict 是无序的
 key必须是唯一的,天生去重
 
 info = {
  'stu1101':"brace";
  'stu1102':"Kitty";
  'stu1103':"Lucy"
 }
 
 print(info)
 print(info['stu1101'])
 
 输出:
 {'stu1101': 'brace', 'stu1102': 'Kitty', 'stu1103': 'Lucy'}
 brace
 
 查找:
 info[stu1101]    #如果key不存在会报错
 info.get("stu1101")   #有则返回,否组不返回
 
 修改:
 info['stu1101']="你好"
 
 增加:
 info['stu1104']="你好"
 
 删除:
 del info['stu1101']
 info.pop('stu1101')
 info.popitem()   #随机删除
 
 
 多级字典嵌套及操作:
 
 省市县:
 
 china_name = {
 "安徽省":{"城市":["合肥"," 安庆","黄山","芜湖","池州"]},
 "上海市":{"城市":["杨浦"," 闵行","浦东","长宁","黄埔"]},
 "江苏省":{"城市":["南京"," 苏州","无锡","常州","苏北"]}
 }
 print(china_name)
 print(china_name["安徽省"])
 print(china_name.keys())
 print(china_name.values())
 输出
 {'安徽省': {'城市': ['合肥', ' 安庆', '黄山', '芜湖', '池州']}, '上海市': {'城市': ['杨浦', ' 闵行', '浦东', '长宁', '黄埔']}, '江苏省': {'城市': ['南京', ' 苏州', '无锡', '常州', '苏北']}}
 {'城市': ['合肥', ' 安庆', '黄山', '芜湖', '池州']}
 dict_keys(['安徽省', '上海市', '江苏省'])
 dict_values([{'城市': ['合肥', ' 安庆', '黄山', '芜湖', '池州']}, {'城市': ['杨浦', ' 闵行', '浦东', '长宁', '黄埔']}, {'城市': ['南京', ' 苏州', '无锡', '常州', '苏北']}])
 
 info = {
 'stu1101': "brace",
 'stu1102': "Kitty",
 'stu1103': "Lucy",
 }
 
 #setdefault 如果key存在,保持当前的,如果不存在,则新增并将默认值赋值。
 info.setdefault("stu1101","xxxxxxxxx")
 print(info)
 info.setdefault("stu1104","xxxxxxxxx")
 print(info)
 
 {'stu1101': 'brace', 'stu1102': 'Kitty', 'stu1103': 'Lucy'}
 {'stu1101': 'brace', 'stu1102': 'Kitty', 'stu1103': 'Lucy', 'stu1104': 'xxxxxxxxx'}
 
 
 update 如果有重复的key增覆盖value,不重复的新增;
 info = {
 'stu1101': "brace",
 'stu1102': "Kitty",
 'stu1103': "Lucy",
 }
 b = {
  "stu1101":"hello",
  "stu1104":"SSSSS",
  "stu1105":"FFFFFF"
 }
 info.update(b)
 print(info)
 print(info.items())   #将字典元素转化为列表元素
 
 
 
 输出:
 {'stu1101': 'hello', 'stu1102': 'Kitty', 'stu1103': 'Lucy', 'stu1104': 'SSSSS', 'stu1105': 'FFFFFF'}
 dict_items([('stu1101', 'hello'), ('stu1102', 'Kitty'), ('stu1103', 'Lucy'), ('stu1104', 'SSSSS'), ('stu1105', 'FFFFFF')])
 
 
 初始化一个字典,key设定为设置项,值为初始化值test
 c = dict.fromkeys([5,6,7],"test")
 print(c)
 
 {5: 'test', 6: 'test', 7: 'test'}
 
 c = dict.fromkeys([5,6,7],[1,{2:"ss"},2])
 print(c)
 c[6][1][2]="Brace"
 print(c)
 输出:
 {5: [1, {2: 'ss'}, 2], 6: [1, {2: 'ss'}, 2], 7: [1, {2: 'ss'}, 2]}
 {5: [1, {2: 'Brace'}, 2], 6: [1, {2: 'Brace'}, 2], 7: [1, {2: 'Brace'}, 2]}
 
 for i in c:     #高效,直接循环;
  print(i,c[i])
  
 输出:
 5 [1, {2: 'Brace'}, 2]
 6 [1, {2: 'Brace'}, 2]
 7 [1, {2: 'Brace'}, 2]
 
 for k,v in c.items():  #由把字典转列表的过程,数据量大,效率低。
    print(k,v)
 
 5 [1, {2: 'Brace'}, 2]
 6 [1, {2: 'Brace'}, 2]
 7 [1, {2: 'Brace'}, 2]
 
 
作业:
 用户入口:
 1. 商品信息存在文件里
 2. 已够商品,余额记录
 
 商家入口
 2. 可以添加商品,修改商品价格
 
 
作业:
 启动程序后,让用户输入工资,然后打印商品列表
 运行用户根据商品编号购买商品
 用户选择商品后,检查余额是否够,够直接扣款,不够就提醒
 可随时退出,退出时,打印已购买商品和余额
 
 
# Author:Brace Li
import sys
while True:
    salary = input("pls input your salary:")
    if salary.isdigit():
        salary = int(salary)
        break
products_list = [
    ("Iphone",5800),
    ("Mac Pro",9800),
    ("Bike",800),
    ("Watch",10600),
    ("Book",45)
]
product_box = []
while True:
    product_id = []
    for i,v in enumerate(products_list):
        print(i, v)
        product_id.append(i)
    while True:
        pro_num = input("select product:")
        if not pro_num.isdigit():
            print("Error: >> Product number error!")
            continue
        product_num = int(pro_num)
        if product_num in product_id:
            break
        else:
            print("Error: >> Product number error!")
            continue
    product_box.append(products_list[product_num])
    print("the product '%s' had been selected successfully" %products_list[product_num][0])
    print()
    print("*" * 80)
    print("1. Exit System, 2.Continue, 3.Charge")
    print("*" * 80)
    while True:
        customer_action = input("select>>")
        if not customer_action.isdigit():
            print("Error: Input error!")
            continue
        customer_action = int(customer_action)
        if not customer_action in (1,2,3):
            print("Error: Input error!")
            continue
        if customer_action == 1:
            sys.exit()
        elif customer_action == 2:
            break
        else:
            print(product_box)
            total_charge = 0
            print("*" * 40)
            for n in list(set(product_box)):
                print("|| %s || %d ||" %(n[0],product_box.count(n)))
                print("*" * 40)
                total_charge += n[1]*product_box.count(n)
            print("Product total price: %d" %total_charge)
            print("*" * 40)
            if salary > total_charge:
                balance = salary - total_charge
                print("Charging Successfully !!!!!")
            else:
                balance = salary
                print("Charging fail, salary not enough !!!!!")
            print("balance: %d" % balance)
            sys.exit() 

转载于:https://www.cnblogs.com/brace2011/p/9180477.html

你可能感兴趣的文章
反射和动态导入模块
查看>>
信息社会
查看>>
Mysql存储引擎概念特点介绍及不同业务场景选用依据
查看>>
关于Java类Calendar做统计时 获取日期的一些常见操作
查看>>
从程序员转向淘宝店主的探索
查看>>
openstack 中国联盟公开课參会总结
查看>>
约瑟夫环问题详解 (c++)
查看>>
Ubuntu 配置VNC以及使用VNC连接时,无法显示系统菜单栏,解决方法
查看>>
BZOJ.3990.[SDOI2015]排序(DFS)
查看>>
hdu 1358
查看>>
“-fembed-bitcode is not supported on versions of iOS prior to 6.0” 错误
查看>>
[转]jquery mobile中redirect重定向问题
查看>>
[django]表格的添加与删除实例(可以借鉴参考)
查看>>
Mockito一个采用Java编写用于单元测试的Mocking框架
查看>>
把elipse非maven的Struts2+Spring+Ibatis项目导入Idea中
查看>>
SVGImageView
查看>>
Android UI 优化 使用<include/>和 <merge />标签
查看>>
linux命令--使用fsck修复文件系统
查看>>
洛谷 P2324 [SCOI2005]骑士精神
查看>>
leetcode(64)最小路径和
查看>>