python之dictionary

时间:2021-04-29 11:54:54

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 字典&lpar;Dictionary&rpar;操作详解

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

  2. Python 字典&lpar;Dictionary&rpar; get&lpar;&rpar;方法

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

  3. Python 字典&lpar;Dictionary&rpar; setdefault&lpar;&rpar;方法

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

  4. Python 字典&lpar;Dictionary&rpar; has&lowbar;key&lpar;&rpar;方法

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

  5. Python 字典&lpar;Dictionary&rpar; values&lpar;&rpar;方法

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

  6. Python 字典&lpar;Dictionary&rpar; keys&lpar;&rpar;方法

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

  7. Python字典&lpar;Dictionary&rpar;update&lpar;&rpar;方法

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

  8. Python 字典&lpar;Dictionary&rpar; items&lpar;&rpar;方法

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

  9. Python 字典&lpar;Dictionary&rpar; copy&lpar;&rpar;方法

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

  10. Python 字典&lpar;Dictionary&rpar; clear&lpar;&rpar;方法

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

随机推荐

  1. 转: Redis基础总结

    转文:http://blog.csdn.net/basycia/article/details/52175429 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安 ...

  2. Mysql命令集

    mysql远程授权GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123.com' WITH GRANT OPTION;flush p ...

  3. vim添加Vundle插件

    1.git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 2.vim /etc/vimrc se ...

  4. Android之Inflate&lpar;&rpar;

      Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能.最近做的一个项目就是这一点让我迷茫了好几天. Android上还有一个与Inflate( ...

  5. Python入门一:基本数据类型

    作为一个刚入门编程的大一狗,第一次写博客,希望能对自己学的知识进行巩固和提升,也希望记录自己成长的过程. 学习Python,一是因为暑假学的c++头疼,听说Python简单,那我就试试吧,二是因为Py ...

  6. iOS-UICollectionView自定义布局

    UICollectionView自定义布局 转载: http://answerhuang.duapp.com/index.php/2013/11/20/custom_collection_view_l ...

  7. MFC网页

    写网页, 选择MFC,MFC应用程序,其他默认,单击确定 项目类型,选Offce,其他默认,单击下一步 默认,单击下一步 文件拓展名,输入html,其他默认,单击下一步 数据库支持,默认,单击下一步 ...

  8. 使用TWebBrowser时存在内存泄漏问题的解决方案(使用SetProcessWorkingSetSize函数,或者修改OleCtrls&period;pas源码解决问题)

    用TWebBrower不断打开多个网页,多某些版本的操作系统上运行一段时间后,发现占用系统内存达几百M,直到关闭程序后,占用的内存才能释放. 这个问题在网有很多讨论,比较多人的建议办法是用SetPro ...

  9. pythonl练习

    练习:用户输入姓名.年龄.工作.爱好 ,然后打印成以下格式 ------------ info of Egon ----------- Name : Egon Age : 22 Sex : male ...

  10. 15&lowbar;Raid及mdadm命令 &lowbar;LVM

    磁盘管理:     机械式硬盘:     U盘,光盘,软盘,硬件,磁带 ln [ -s -v ] SRC DEST 硬链接:     1.只能对文件创建,不能应用于目录     2.不能跨文件系统   ...