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实现倒计时的示例
Feb 14 Python
Python实现的检测网站挂马程序
Nov 30 Python
python生成随机mac地址的方法
Mar 16 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
python实现红包裂变算法
Feb 16 Python
win10系统中安装scrapy-1.1
Jul 03 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 Python
python实现高效的遗传算法
Apr 07 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 构造函数construct的前下划线是双的_
2009/12/08 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
php获取访问者浏览页面的浏览器类型
2017/01/23 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
python读取html中指定元素生成excle文件示例
2014/04/03 Python
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
大学生村官事迹材料
2014/01/21 职场文书
婚前财产公证书
2014/04/10 职场文书
社区服务活动总结
2014/05/07 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
XX部保密工作制度范本
2019/08/27 职场文书