Python之字典

本文深入讲解了Python中字典的基本概念、创建方法、常用操作及实际应用案例,帮助读者掌握字典这一重要的数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典(dict)

字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型

字典创建
赋值创建字典

通过工厂函数创建字典

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

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



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



通过字典的fromkeys方法创建字典,所有元素有一个默认值;
# 如果没有指定默认值,默认为None;
print {}.fromkeys("hello")
# 给每个元素设置默认值为"123";
print {}.fromkeys(["user1", "user2", "user3"], "123")



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

代码如下

卡号由6位组成, 前3位是610, 后面的依次是001, 002, 003...100
cardids = []
for i in range(1, 101): # i = 1, 2, 3, 4...100
a = "610%.3d" %(i) # a= 610001, 610002, 610003, ....610100
cardids.append(a)
# print cardids # cardids是列表
print {}.fromkeys(cardids, "000000")


测试结果如下



分析字典的特性(跟元组和列表比较)

字典不能索引和切片,因为字典是无序的数据类型;

字典不支持重复和连接;
字典支持成员操作符: 判断字典的key值是否在字典中存在; in, not in


字典的增删改查


字典名[key] = value
d.update(a=1, b=2)
d.update({'a':1, 'b',2})
d.setdefault('a', 1)
** 重点: setdefault 和 update方法的不同

services = {"ftp":[20,21]}
# 通过字典名[key]=value,将key-value添加到字典中;
services['http'] = [80, 8080]


update方法实现添加: key存在,覆盖value值, 否则,添加


services = {"ftp":[20,21]}
services1 = {'http':[80,8080]}
# services.update(services1)
# print services
# 更建议使用
services.update(http=[80,8080], ftp=22)
print services



setdefault实现添加: key存在,不覆盖value值, 否则,添加
services = {"ftp":[20,21]}
services1 = {'http':[80,8080]}
services.setdefault("ftp", 22)
print services



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



查看key值;
查看value值;
查看key-value键值对;
查看key是否存在;

services = {'ftp': 22, 'http': [80, 8080]}
# 查看key值
services.keys()
services.viewkeys() # 给key起名字
services.iterkeys()
# 查看value值
services.values()
# 查看key-value键值对
services.items()




查看key是否存在;
services.has_key('ftpp')
# 查看指定key对应的value值;如果key不存在,不报错; 如果存在,返回value值;
# services['ftp'] 如果key不存在,直接报错;
services.get('ftpp



# - d.pop(key) 删除指定key的字典元素;


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



循环遍历字典


for i,j in services.items():
print i,j


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

for i in services:
print i



字典应用
应用1: 通过字典实现case语句
目前python不支持case语句;
实现case语句的两种方式:
if...elif...elif...else...
字典实现


第一种方法 if进行实现

代码如下所示

# 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"


测试结果如下所示:



第二种方法 字典进行实现

代码如下

# 字典实现case语句
#coding:utf-8
"""
# 实现四则运算
- 用户分别输入第一个数字,运算操作符,第三个数字;
- 根据用户的运算操作打印出运算结果;
"""
from __future__ import division
num1 = input()
ope = raw_input()
num2 = input()
d = {
"+" : num1+num2,
"-" : num1-num2,
"*" : num1*num2,
"/" : num1/num2,
}
if not ope in d:
print "error operator"
else:
print d[ope]


测试结果如下所示


over~


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值