python中的字典使用分享


Posted in Python onJuly 31, 2016

字典中的键使用时必须满足一下两个条件:

1、每个键只能对应一个项,也就是说,一键对应多个值时不允许的(列表、元组和其他字典的容器对象除外)。当有键发生冲突时(即字典键重复赋值),取最后的赋值。

>>> myuniversity_dict = {'name':'yuanyuan', 'age':18, 'age':19, 'age':20, 'schoolname':Chengdu, 'schoolname':Xinxiang}

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'Chengdu' is not defined

>>> myuniversity_dict = {'name':'yuanyuan', 'age':18, 'age':19, 'age':20, 'schoolname':'Chengdu', 'schoolname':'Xinxiang'}

>>> myuniversity_dict

{'age': 20, 'name': 'yuanyuan', 'schoolname': 'Xinxiang'}

>>>

2、键必须是可哈希的,像列表和字典这样的可变类型,由于他们是不可哈希的,所以不能作为字典的键。

为什么呢?—— 解释器调用哈希函数,根据字典中键的值来计算存储你的数据的位置。如果键是可变对象,可以对键本身进行修改,那么当键发生变化时,哈希函数会映射到不同的地址来存储数据,这样哈希函数就不可能可靠地存储或获取相关的数据; 选择可哈希键的原因就是他们的值不能被改变。摘抄python 核心编程(第二版)的一个实例如下:

#!/usr/bin/env python

db = {}

def newuser():
  prompt = 'login desired: '
  while True:
    name = raw_input(prompt)
    if db.has_key(name):
      prompt = 'name taken, try another\n'
      continue
    else:
      break

  pwd = raw_input('passwd: ')
  db[name] = pwd

def olduser():
  name = raw_input('login: ')
  pwd = raw_input('passwd: ')

  passwd = db.get(name)
  if passwd == pwd:
    print 'welcome back', name
  else:
    print 'login incorrect'

def showmenu():
  prompt = """

(N)ew User Login
(E)xisting User Login
(Q)uit

Enter choice:"""
  done = False
  while not done:

    chosen = False
    while not chosen:
      try:
        choice = raw_input(prompt).strip()[0].lower()
      except:
        choice = 'q'
      print '\nYou picked: [%s]' % choice
      if choice not in 'neq':
        print 'invalid option, try again'
      else:
        chosen = True

    if choice == 'q':done = True
    if choice == 'n':newuser()
    if choice == 'e':olduser()

if __name__ == '__main__':
  showmenu()

运行结果:

[root@localhost src]# python usrpw.py 


(N)ew User Login
(E)xisting User Login
(Q)uit

Enter choice:n

You picked: [n]
login desired: root
passwd: 1


(N)ew User Login
(E)xisting User Login
(Q)uit

Enter choice:n

You picked: [n]
login desired: root
name taken, try another
Python 相关文章推荐
python集合类型用法分析
Apr 08 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
Python实现朴素贝叶斯分类器的方法详解
Jul 04 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 Python
Python偏函数实现原理及应用
Nov 20 Python
如何正确理解python装饰器
Jun 15 Python
python标准库ElementTree处理xml
May 20 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 #Python
python3新特性函数注释Function Annotations用法分析
Jul 28 #Python
python中的格式化输出用法总结
Jul 28 #Python
Python中字符串的常见操作技巧总结
Jul 28 #Python
Python中不同进制的语法及转换方法分析
Jul 27 #Python
深入理解Python装饰器
Jul 27 #Python
python批量制作雷达图的实现方法
Jul 26 #Python
You might like
PHP程序员编程注意事项
2008/04/10 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
详解webpack分包及异步加载套路
2017/06/29 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
Python获取脚本所在目录的正确方法
2014/04/15 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
python如何删除文件中重复的字段
2019/07/16 Python
Form表单及django的form表单的补充
2019/07/25 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
优秀教师工作感言
2014/02/16 职场文书
单位消防安全责任书
2014/07/23 职场文书
开平碉楼导游词
2015/02/06 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js