码迷,mamicode.com
首页 > 编程语言 > 详细

python中的字典应用实例

时间:2016-07-31 00:04:05      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

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

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中的字典应用实例

标签:

原文地址:http://www.cnblogs.com/noxy/p/5721889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!