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计算一个文件里字数的方法
Jun 15 Python
深入浅析python继承问题
May 29 Python
python验证码识别的实例详解
Sep 09 Python
Python中模块与包有相同名字的处理方法
May 05 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python实现顺序表的简单代码
Sep 28 Python
详解Python Matplot中文显示完美解决方案
Mar 07 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
python实现井字棋小游戏
Mar 04 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 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函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
php array_map()函数实例用法
2021/03/03 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
js调用css属性写法
2013/09/21 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
python实现从ftp服务器下载文件的方法
2015/04/30 Python
Python中统计函数运行耗时的方法
2015/05/05 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
python版飞机大战代码分享
2018/11/20 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
python实现的自动发送消息功能详解
2019/08/15 Python
Python join()函数原理及使用方法
2020/11/14 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
党校学习思想汇报
2014/01/06 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
合作协议书范本
2014/04/17 职场文书
美术指导助理求职信
2014/04/20 职场文书
作风转变年心得体会
2014/10/22 职场文书
会计岗位职责
2015/02/03 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
2016党校培训心得体会
2016/01/07 职场文书
在HTML中引入CSS的几种方式介绍
2021/12/06 HTML / CSS
分析MySQL优化 index merge 后引起的死锁
2022/04/19 MySQL
微信小程序实现轮播图指示器
2022/06/25 Javascript