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实现的重启关机程序实例
Aug 21 Python
Python编程中运用闭包时所需要注意的一些地方
May 02 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
用python处理图片之打开\显示\保存图像的方法
May 04 Python
python:print格式化输出到文件的实例
May 14 Python
Django models.py应用实现过程详解
Jul 29 Python
Django自定义列表 models字段显示方式
Apr 03 Python
在pycharm中关掉ipython console/PyDev操作
Jun 09 Python
Python变量格式化输出实现原理解析
Aug 06 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
pandas按条件筛选数据的实现
Feb 20 Python
pytorch中的model=model.to(device)使用说明
May 24 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
PHP安装问题
2006/10/09 PHP
php下统计用户在线时间的一种尝试
2010/08/26 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
Javascript中Eval函数的使用说明
2008/10/11 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
Python sys.argv用法实例
2015/05/28 Python
Python实现学生成绩管理系统
2020/04/05 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
python新手学习可变和不可变对象
2020/06/11 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
大学生秋游活动方案
2014/02/17 职场文书
食品销售计划书
2014/04/26 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers