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 提取文件的小程序
Jul 29 Python
python 实现堆排序算法代码
Jun 05 Python
Python列表append和+的区别浅析
Feb 02 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 Python
python实现简单tftp(基于udp协议)
Jul 30 Python
Python 学习教程之networkx
Apr 15 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
python迭代器常见用法实例分析
Nov 22 Python
python能开发游戏吗
Jun 11 Python
详解python中的异常和文件读写
Jan 03 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
2015/03/04 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
Vue组件生命周期运行原理解析
2020/11/25 Vue.js
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Windows下python2.7.8安装图文教程
2016/05/26 Python
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
关于python写入文件自动换行的问题
2018/06/23 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
django实现支付宝支付实例讲解
2019/10/17 Python
基于pandas中expand的作用详解
2019/12/17 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
德尔福集团DELPHI的笔试题
2012/02/22 面试题
领导干部四风问题自我剖析材料
2014/09/25 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
整改通知书格式
2015/04/22 职场文书
Java获取字符串编码格式实现思路
2022/09/23 Java/Android