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脚本实现查找webshell的方法
Jul 31 Python
python脚本实现分析dns日志并对受访域名排行
Sep 18 Python
Python入门必须知道的11个知识点
Mar 21 Python
Python单元测试简单示例
Jul 03 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
Python WEB应用部署的实现方法
Jan 02 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
Aug 15 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
python实现简单井字棋小游戏
Mar 05 Python
Python中的With语句的使用及原理
Jul 29 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/02 国漫
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
深入浅析用PHP实现MVC
2016/03/02 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
JS分页效果示例
2013/10/11 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Pyhton中防止SQL注入的方法
2015/02/05 Python
浅谈Python基础之I/O模型
2017/05/11 Python
Python 多进程和数据传递的理解
2017/10/09 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
基于keras中的回调函数用法说明
2020/06/17 Python
python 实现性别识别
2020/11/21 Python
python 调用Google翻译接口的方法
2020/12/09 Python
Django实现简单的分页功能
2021/02/22 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
公司同意接收函
2014/01/13 职场文书
教师业务学习材料
2014/12/16 职场文书
见习期个人总结
2015/03/05 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL