字典

摘要

字典及其常见方法

目的

  • 理解字典数据类型含义及其特点

  • 掌握字典的常见操作方法

内容

字典基本介绍和定义方法
  • 字典--数据结构
  • 使用键-值(key-value)存储,具有极快的查找速度。
  • 字典key为不可变对象
  • 定义方法
list1 = ['name','tom']
list2 = ['age',20]
#合并两个列表
print(zip(list1,list2))
结果:[('name', 'age'), ('tom', 20)]
#字典创建方法
#方法1 dict为字典函数
dict(zip(list1,list2))
#方法2 直接创建
{'a':1,1:123}
#方法2
dict(a=1,b=2)

操作方法
#key()  keys值,返回的是keys的一个列表
dic = {'a':1,1:123}
print(dic.keys())
结果:['a', 1]
print(len(dic))
结果:2
#values()  返回values值的一个列表
print(dic.values())
结果:[1, 123]
#get() 返回key的值,key是唯一的,key不存在返回None
print(dic.get('a'))
结果:1
#判断key值是不是在字典中
print(2 in  dic)
结果:False
#items  字典变列表
print(dic.items())
结果:[('a', 1), (1, 123)]
#copy() 产生新字典和老字典一样
dic1 = dic.copy()
print(dic1)
结果:{'a': 1, 1: 123}
#pop() 删除key值,并返回values,若不存在,报KeyError错误
print(dic1.pop(1))
结果:123
#update() 更新,或两个字典更新到一个字典
dic.update(dic1)
print(dic)
结果:{'a': 1, 1: 123}
#formkeys,创建新字典、字典添加元素,字符为key,默认值为None
print(dic.fromkeys('abc'))
结果:{'a': None, 'c': None, 'b': None}
print(dic.fromkeys(range(3),100))
结果:{0: 100, 1: 100, 2: 100}
#iteritems():变成列表可迭代对象

字典常见打印
#访问字典的key
for i in dic:
    print(i)
#访问字典的values
for i in dic.iteritems():
    print(i)
#打印字典
for k in dic:
    print(k,dic[k])
    print('{0},{1}'.format(k,dic[k]))
for k,v in dic.iteritems():
    print(k,v)
字典和列表比较
和list比较,dict有以下几个特点:

查找和插入的速度极快,不会随着key的增加而变慢;
需要占用大量的内存,内存浪费多。
而list相反:

查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。

练习
#键盘输入数据,存到字典当中,最后格式化打印
info = {}
name = raw_input('Please input name:')
age = raw_input('Please input age:')
gender = raw_input('Please input (M/F):')

info['name'] = name
info['age'] = age
info['gender'] = gender

print(info.items())
#格式化输出
for k,v in info.items():
    print('%s : %s' %(k, v))
    print('{0} : {1}'.format(k,v))

总结

  • 字典的定义方法
  • 字典的常见操作方法和打印方式
  • 格式化输出
  • 字典和列表的特点比较

习题完成情况

# 1. 现有一个字典dict1 保存的是小写字母a-z对应的ASCII码
# dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}
# 1) 将该字典按照ASCII码的值排序
#思路sorted方法排序,取值时使用匿名函数lambda取出values
sorted(dict1.iteritems(), key=lambda d:d[1], reverse=False)

# 2) 有一个字母的ASCII错了,修改为正确的值,并重新排序
#思路,o的ascii码错误 进行修改
dict1['o'] = 111


# 2. 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法)

#思路 string模块中uppercase方法生成A到Z的字符串,A-Z ASCII码65-92
#zip并两个字符串成一个列表,dict生成字典
import string
dict(zip(string.uppercase,range(65,92)))
dict2 = dict(zip(string.uppercase,range(65,92)))


# 3. 将dict2与第一题排序后的dict1合并成一个dict3
dict3 = dict1.copy()
dict3.update(dict2)

转载于:https://www.cnblogs.com/siaspedro/p/8089160.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值