python — 字典

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yd1018701930/article/details/78954928

字典 dict


1、字典创建
赋值创建字典
通过工厂函数创建字典

(1)赋值创建字典 , key-value , 键值对
d = {"key1":"value1", "key2":"value2"}

services = {"ssh":22, "ftp":[20,21], "http":[80, 8080]}
print services
{'ftp': [20, 21], 'http': [80, 8080], 'ssh': 22}

(2)通过工厂函数创建字典
userinfo = dict(user1="123", user2="456", user3 ="789")
print userinfo
{'user2': '456', 'user3': '789', 'user1': '123'}

(3)通过字典的 fromkeys 方法创建字典,所有元素有一个默认值;
# 如果没有指定默认值,默认为 None;

print {}.fromkeys("hello")

{'h': None, 'e': None, 'l': None, 'o': None}


# 给每个元素设置默认值为 "123";
print {}.fromkeys(["user1", "user2", "user3"], "123")
{'user2': '123', 'user3': '123', 'user1': '123'}


应用案例: 生成多个银行卡号,并初始化密码为"000000"


# 卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002, 003...100



2、分析字典的特性(跟元组和列表比较)
字典不能索引和切片,因为字典是无序的数据类型;
字典不支持重复和连接;

字典支持成员操作符: 判断字典的key值是否在字典中存在; (in, not in)

字典的增删改查

(1)# 通过字典名 [key]=value, 将 key-value 添加到字典中 ;

字典名[key] = value



(2)重点: setdefault 和 update方法的不同
# update 方法实现添加: key 存在,覆盖 value 值, 否则,添加

更建议使用

D.update(a=111)   #key存在

D.update(a=1,b=2)   #批量添加

D.update(d=4)      #key不存在,覆盖{'a': 111, 'b': 2, 'c': 3, 'd': 4}

# setdefault 实现添加: key 存在,不覆盖 value 值, 否则,添加



(1)字典名[key]=value
(2)d.update({'a':2, 'b':3})
         d.update(a=2, b=3)


查看key值;
查看value值;
查看key-value键值对;
查看key是否存在;
services = {'ftp': 22, 'http': [80, 8080]}
(1)# 查看 key 值
services.keys()
services.viewkeys()
services.iterkeys()  ?

# 给 key 起名字


(2)# 查看 value 值

services.values()


(3)# 查看 key-value 键值对

services.items()



(4)# 查看 key 是否存在 ;

  D.has_key('a')   若 存在/不存在,返回bool值True/Faulse

  D.get('a')           查看指定 key 对应的 value 值;如果 key 不存在,不报错; 如果存在,返回 value 值;
  D['key']     如果 key 不存在,直接报错;



d.pop(key)        删除指定 key 的字典元素;
d.popitem()       随机删除字典的 key-value 元素 ;
del d[key]          删除指定 key 的字典元素;
d.clear()            清空字典元素



循环遍历字典



默认情况下遍历字的是字典 的key 值;

for i in D:
print i

a

b

c

d




字典应用

应用1: 通过字典实现case语句
目前python不支持case语句;
实现case语句的两种方式:
if...elif...elif...else...
字典实现In [ ]:
# if...elif...elif...else... 实现:
#coding:utf-8
"""
# 实现四则运算
- 用户分别输入第一个数字,运算操作符,第三个数字;
- 根据用户的运算操作打印出运算结果;
"""
from __future__ import division
num1 = input()
ope = raw_input()
num2 = input()
# case 语句
if ope == "+":
print num1+num2
elif ope == "-":
print num1-num2
elif ope == "*":
print num1*num2
elif ope == "/":
print num1/num2
else:
print "error operator"In [ ]:
# 字典实现 case 语句
#coding:utf-8
"""
# 实现四则运算
- 用户分别输入第一个数字,运算操作符,第三个数字;

- 根据用户的运算操作打印出运算结果;



应用2:用户管理系统
1.注册新用户
如果注册用户已经存在,则报错;
需要填写信息: name, passwd, gender, email,age;
2.用户登录 要求同之前写的用户登录系统
3.注销用户 用户注销时,需要输入用户名和正确的用户密码
4.显示用户信息 显示系统中存在所有已经注册用户的信息;

5.退出系统

1 #!/usr/bin/env python
  2 #!coding:utf-8
  3 stack = []
  4 D = {}
  5 D2 = {}
  6 info = """
  7 用户管理系统
  8 1). 注册
  9 2). 登陆
 10 3). 显示用户信息
 11 4). 退出系统
 12 请输入你的选择:"""
 13 # 死循环
 14 while True:
 15     choice = raw_input(info).strip()
 16     if choice == "1":
 17         print "填写注册信息".center(40, "*")
 18         name = raw_input("姓名:")
 19         passwd = raw_input("输入密码:")
 20         gendar = raw_input("性别:")
 21         email = raw_input("邮箱:")
 22         stack.extend([name,passwd,gendar,email])
 23         D.setdefault(name,passwd)
 24         D2.setdefault(name,[passwd,gendar,email])
 25 #       print D
 26     elif choice == "2":
 27         print "登陆界面".center(40, "*")
 28         D.update(name=passwd)
 29         name = raw_input("username:")
 30         passwd = raw_input("password:")
 31         if D.get(name) == passwd:
 32             print "登陆成功"
 33         else:
 34             print "登陆失败"
 35
 36     elif choice == "3":
 37         print "用户信息".center(40, "*")
 38         print D2
 39
 40     elif choice == "4":
 41         exit()



展开阅读全文

没有更多推荐了,返回首页