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中使用 Selenium 实现网页截图实例
Jul 18 Python
python输出当前目录下index.html文件路径的方法
Apr 28 Python
获取Django项目的全部url方法详解
Oct 26 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
浅析Python 字符编码与文件处理
Sep 24 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
解决python绘图使用subplots出现标题重叠的问题
Apr 30 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
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
第八节 访问方式 [8]
2006/10/09 PHP
BBS(php &amp; mysql)完整版(一)
2006/10/09 PHP
中篇:安装及配置PHP
2006/12/13 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
PHP5.3新特性小结
2016/02/14 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
php DES加密算法实例分析
2019/09/18 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
jquery获取一个元素下面相同子元素的个数代码
2014/07/31 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
Python实现备份文件实例
2014/09/16 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
详解python常用命令行选项与环境变量
2020/02/20 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
放飞梦想演讲稿800字
2014/08/26 职场文书
地道战观后感2000字
2015/06/04 职场文书
鸦片战争观后感
2015/06/09 职场文书
经营场所使用证明
2015/06/19 职场文书
django学习之ajax post传参的2种格式实例
2021/05/14 Python
解析原生JS getComputedStyle
2021/05/25 Javascript
MySQL开启事务的方式
2021/06/26 MySQL
MySQL详细讲解变量variables的用法
2022/06/21 MySQL