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黑魔法之编码转换
Jan 25 Python
Python实现输出程序执行进度百分比的方法
Sep 16 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
wxPython的安装与使用教程
Aug 31 Python
python 堆和优先队列的使用详解
Mar 05 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
Python 实现的 Google 批量翻译功能
Aug 26 Python
pandas数据分组groupby()和统计函数agg()的使用
Mar 04 Python
十个Python自动化常用操作,即拿即用
May 10 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 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 session处理的定制
2009/03/16 PHP
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
jQuery中prop()方法用法实例
2015/01/05 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
梳理一下vue中的生命周期
2020/12/30 Vue.js
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
复制粘贴功能的Python程序
2008/04/04 Python
python遍历类中所有成员的方法
2015/03/18 Python
Python smallseg分词用法实例分析
2015/05/28 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Python同时迭代多个序列的方法
2020/07/28 Python
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
寝室长工作失责检讨书
2014/10/06 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python