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自动翻译实现方法
May 28 Python
基于Python List的赋值方法
Jun 23 Python
python flask实现分页的示例代码
Aug 02 Python
Python实现多属性排序的方法
Dec 05 Python
在pycharm中设置显示行数的方法
Jan 16 Python
python 进程 进程池 进程间通信实现解析
Aug 23 Python
原生python实现knn分类算法
Oct 24 Python
python安装dlib库报错问题及解决方法
Mar 16 Python
Python实现代码块儿折叠
Apr 15 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
Python实现异步IO的示例
Nov 05 Python
Python IO文件管理的具体使用
Mar 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
探讨php中header的用法详解
2013/06/07 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
Python 复平面绘图实例
2019/11/21 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
基于Python测试程序是否有错误
2020/05/16 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
对祖国的寄语大全
2014/04/11 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
扬州个园导游词
2015/02/06 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python
MYSQL如何查看操作日志详解
2022/05/30 MySQL