python中的字典使用分享
admin
2023-08-01 17:22:54
0

字典中的键使用时必须满足一下两个条件:

1、每个键只能对应一个项,也就是说,一键对应多个值时不允许的(列表、元组和其他字典的容器对象除外)。当有键发生冲突时(即字典键重复赋值),取最后的赋值。

复制代码 代码如下:>>> myuniversity_dict = {\’name\’:\’yuanyuan\’, \’age\’:18, \’age\’:19, \’age\’:20, \’schoolname\’:Chengdu, \’schoolname\’:Xinxiang}
Traceback (most recent call last):
  File \”\”, line 1, in
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

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...