1、python3字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})

dict1 = {key1:value1,key2:value2}

字典的键必须是唯一的 ,但值则不必;值可以去任何数据类型,但键必须是不可变的,如字符串,数字或元组。

>>> dict1 = {'name':'python','age':'','character':'scripts'}

2、访问字典

使用key访问对应的值,如果key不存在则报错

>>> dict1 = {'name':'python','age':'','character':'scripts'}
>>> print(dict1['name'])
python
>>> print(dict1['age'])
20
>>> print(dict1['age1'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age1

3、修改、删除字典元素

将指定的key赋值即可修改字典元素值,能删除单个的元素也能清空字典

>>> dict2 = {'key1':123,'key2':'dictionary'}
>>> dict2['key1']=888 #修改对应的key的值
>>> print(dict2)
{'key2': 'dictionary', 'key1': 888}
>>> dict2['key3']='python3' #给字典添加元素
>>> print(dict2)
{'key2': 'dictionary', 'key1': 888, 'key3': 'python3'} >>> del dict2['key1'] #删除键
>>> print(dict2)
{'key2': 'dictionary', 'key3': 'python3'}
>>> dict2.clear() #清空字典内容
>>> dict2
{}
>>> del dict2 #删除字典
>>> dict2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dict2' is not defined #字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
#不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
>>> dict = {1:'a',2:'b',1:'c'}
>>> print(dict)
{1: 'c', 2: 'b'}
#键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
>>> dict = {1:'a','abc':'python',('tuple','values'):'abc',['list1']:'listname'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

4、字典内置函数

>>> dict1 = {1:'a',2:'b',3:'c',4:'d'}
>>> len(dict1) #计算字段元素个数
4
>>> str(dict1) #输出字典,以可以打印的字符串表示
"{1: 'a', 2: 'b', 3: 'c', 4: 'd'}"
>>> type(dict1) #返回变量类型
<class 'dict'>

5、python3字典方法

>>> dict = {'a':1,'b':2}
>>> dict.clear() #清除字典内的所有元素
>>> dict
{} >>> dict = {'a':1,'b':{'c':22,'d':33}}
>>> dict1 = dict.copy() #返回字典的浅复制,即只拷贝第一层键对应值
>>> dict1
{'b': {'d': 33, 'c': 22}, 'a': 1} >>> dict1.fromkeys(range(5),'') #创建一个新字典,迭代序列做字典的键,value为字典的初始值,此处为"000"
{0: '', 1: '', 2: '', 3: '', 4: ''} >>> dict1 = {'k1':'v1','k2':'v2'}
>>> print(dict1.get('k3')) #get查找key是否存在,如果不存在则用None,或指定值
None
>>> print(dict1.get('k3','python'))
python
>>> 'k1' in dict1 #判断键是否存在,存在返回true,否则返回false
True
>>> 'k3' in dict1
False >>> dic = {'k1':'v1','k2':'v2'}
>>> print(dic.items()) #以列表返回可遍历的(键, 值) 元组数组
dict_items([('k1', 'v1'), ('k2', 'v2')])
>>> for k,v in dic.items():  #迭代循环取值
... print(k,v)
...
k1 v1
k2 v2
>>> print(dic.keys())   #以列表返回字典的所有键
dict_keys(['k1', 'k2'])
>>> print(dic.values()) #以列表返回字典的所有值
dict_values(['v1', 'v2']) >>> dic.setdefault('k3','v3') #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default或指定
'v3'
>>> dic
{'k1': 'v1', 'k3': 'v3', 'k2': 'v2'}
>>> dic1 = {1:22,2:33,3:44}
>>> dic.update(dic1) #把字典dic1的键/值对更新到dic里
>>> dic
{1: 22, 2: 33, 3: 44, 'k3': 'v3', 'k1': 'v1', 'k2': 'v2'}
>>> dic.pop(1) #删除字典给定的键值,返回值为删除的值,key必须指定,如删除键不存在则返回default值,可指定。
22
>>> dic
{2: 33, 3: 44, 'k3': 'v3', 'k1': 'v1', 'k2': 'v2'}
>>> dic.pop(1,'hehe')
'hehe'
>>> dic.popitem() #随机删除字典中的一对键和值(一般删除最前的对)
(2, 33)
>>> dic.popitem()
(3, 44)

6、小实例

根据奇数和偶数生成字典元素
dct1 = {}
for i in range(20):
if i%2 == 1:
if 'odd' in dct1.keys():
dct1['odd'].append(i)
else:
dct1['odd'] = [i,]
else:
if 'even' in dct1.keys():
dct1['even'].append(i)
else:
dct1['even'] = [i,]
print(dct1) 输出结果:
{'odd': [1, 3, 5, 7, 9, 11, 13, 15, 17, 19], 'even': [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]} 登陆购物车:
 #!/usr/bin/env python
#coding:utf8
#file:Administrator
#time:20170926
import sys,os
#统计三次用户错误锁定
count = 0
#用户密码字典
name_pass = {'user1':'','user2':'','user3':''}
for i in range(10):
name_input = input('请输入用户名:')
if name_input in name_pass.keys(): #判断用户存在否
passwd_input = input('请输入密码:')
if passwd_input == name_pass[name_input]: #判断对应用户密码
print('恭喜登陆成功!')
break
else:
if count > 1:
print('3次输入错误,您账号已锁定')
exit()
print('{}用户名不存在或密码错误,请重新输入!'.format(name_input))
count += 1
else:
print('{}用户不存在'.format(name_input))
continue
#商品列表
shop_list = [
['iphone7',6500],
['iphone6',4500],
['金立s10',3400],
['华为r79',2888],
['魅族NOTE5',1888],
['opppR9',3600],
]
money = eval(input('请输入你的预购金额:'))
shop_out = [] #购物车
all_kaixiao = 0 #统计值
while True:
print('++++++++++商品清单++++++++++++++')
for num,i in enumerate(shop_list,1):
if isinstance(i,list):
shop_li = i[0]+"\t"+str(i[1])
print(num,shop_li)
else:
print(i)
print('q:退出\np:打印清单')
shop_name = input('请输入要购买的商品编号:')
shop_name = str(shop_name) if shop_name == 'q':
exit()
elif shop_name == 'p': #打印购物明细
print('------购物明细------')
for number,i in enumerate(shop_out,1):
if isinstance(i,list):
hehe = i[0]+":"+str(i[1])
print(number,hehe)
else:
print(number,i)
print('---总计金额:%s---'%(all_kaixiao))
continue #跳出循环,不然会输出非法信息
if shop_name.isdigit() == 1: #判断是否为数字
shop_name = int(shop_name)
else:
print('您的输入非法,请重新输入')
continue
unm1 = int(len(shop_list))
if shop_name not in range(1,unm1+1): #判断输入商品编号是否在序列中
print('输入有误,请重新输入!')
continue
else:
price = int(shop_list[shop_name - 1][1]) #商品单价
if money < price:
print('您的金额不足,无法购买')
continue
money = money - price # 剩余金额
out = shop_list[shop_name - 1][:] # 购买商品信息
shop_out.append(out[:]) # 加入购物车
all_kaixiao +=price #汇总消费
print('您购买的商品是:{}单价:{}元'.format(*out))
print('您还可以消费:{}'.format(money))

python之dictionary的更多相关文章

  1. Python 字典(Dictionary)操作详解

    Python 字典(Dictionary)的详细操作方法. Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字 ...

  2. Python 字典(Dictionary) get()方法

    描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: dict.get(key, default=None) 参数 ...

  3. Python 字典(Dictionary) setdefault()方法

    描述 Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值. 语法 setdefault()方法语法: ...

  4. Python 字典(Dictionary) has_key()方法

    描述 Python 字典(Dictionary) has_key() 函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false. 语法 has_key()方法语法:dic ...

  5. Python 字典(Dictionary) values()方法

    描述 Python 字典(Dictionary) values() 函数以列表返回字典中的所有值. 语法 values()方法语法: dict.values() 参数 NA. 返回值 返回字典中的所有 ...

  6. Python 字典(Dictionary) keys()方法

    Python 字典(Dictionary) keys() 函数以列表返回一个字典所有的键. 语法 keys()方法语法: dict.keys() 参数 NA. 返回值 返回一个字典所有的键. 实例 以 ...

  7. Python字典(Dictionary)update()方法

    原文连接:https://www.runoob.com/python/att-dictionary-update.html Python字典(dictionary)update()函数把字典dict2 ...

  8. Python 字典(Dictionary) items()方法

    描述 Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组.高佣联盟 www.cgewang.com 语法 items()方法语法: dict.it ...

  9. Python 字典(Dictionary) copy()方法

    描述 Python 字典(Dictionary) copy() 函数返回一个字典的浅复制.高佣联盟 www.cgewang.com 语法 copy()方法语法: dict.copy() 参数 NA. ...

  10. Python 字典(Dictionary) clear()方法

    Python 字典(Dictionary) clear()方法 描述 Python 字典(Dictionary) clear() 函数用于删除字典内所有元素.高佣联盟 www.cgewang.com ...

随机推荐

  1. Scala并发编程react、loop代码实战具体解释

    演示样例代码及凝视: //scala并发编程中的react和loop,共同特点: //通过线程存用的方式让性能有所提升. //Actor本身的运行,被actor子系统管理的时候,会有一个或者多个远程的 ...

  2. Ignite与Spark集成时,ClassNotFoundException问题解决

    参考文章:https://apacheignite-fs.readme.io/docs/installation-deployment Spark application deployment mod ...

  3. Mac OS 终端利器 iTerm2

    之前一直使用 Mac OS 自带的终端,用起来虽然有些不太方便,但总体来说还是可以接受的,是有想换个终端的想法,然后今天偶然看到一个终端利器 iTerm2,发现真的很强大,也非常的好用,按照网上配置了 ...

  4. 初次使用Python脚本,proto协议文件转Lua代码

    使用IntelliJ IDEA编辑器编写Lua脚本的时候,安装一个插件 "EmmyLua" 可以对有代码提示功能 想把protoBuf协议文件转成Lua代码,然后给出代码提示 第一 ...

  5. iOS masonry九宫格 单行 多行布局

    Masonry是个好东西,在当前尺寸各异的iOS开发适配中发挥着至关重要的作用,由于项目中Masonry布局用的比较多,对于UI布局也有了一些自己的理解,经常会有人问道Masonry布局九宫格要怎么布 ...

  6. ios 去掉字符串中的空格 和指定的字符

    [问题分析] .使用NSString中的stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]方法只是去掉左右 ...

  7. slowhttptest慢攻击工具介绍

    slowhttptest介绍 Slowhttptest是依赖HTTP协议的慢速攻击DoS攻击工具,设计的基本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度缓慢或者发送不完整,服务端为其 ...

  8. Spring拦截器总结

    本文是对慕课网上"搞定SSM开发"路径的系列课程的总结,详细的项目文档和课程总结放在github上了.点击查看 Spring过滤器WebFilter可以配置中文过滤 拦截器实现步骤 ...

  9. php中static 静态关键字

    一直依赖对于php中static关键字比较模糊,只是在单例模式中用过几次.上网查了查,没有找到很全的介绍,自己总结一下. 根据使用位置分为两部分 1.函数体中的静态变量 2.类中的静态属性和方法 1 ...

  10. python模拟shell执行脚本

    工作时候需要模拟shell来执行任务,借助包paramkio import paramiko class ShellExec(object): host = '127.0.0.1' port = 36 ...