python基础教程学习第4章代码

# *_*coding:utf-8 *_*
# author : zmj
# mail : adm01@163.com

“””第四章 当索引不可用时”””

“””4.1字典的用途”””
names = [‘Alice’, ‘Beth’, ‘Cecil’, ‘Dee-Dee’, ‘Earl’]
numbers = [‘2341’, ‘9102’, ‘3158’, ‘0142’, ‘5551’]
print(numbers[names.index(‘Cecil’)])

“””4.2创建和使用字典”””
phonebook = {
‘Alice’: ‘2341’,
‘Beth’: ‘9102’,
‘Cecil’: ‘3258’
}
print(phonebook[‘Cecil’])

“””4.2.1函数 dict”””
# 函数dict
items = [(‘name’, ‘Gumby’), (‘age’, 42)]
d = dict(items)
print(d)

a = dict(name=’Gumby’, age=42)
print(a)

“””
4.2.2 基本字典操作
1、健的类型任何不可变类型 浮点数,字符串 ,元组
x = []
x[42] = ‘Foobar’
2、字典原本没有的键也可以赋值,列表只能通过apend给没有的元素赋值
3、k in d 字典查询的是索引,而列表查询的是值,字典效率高
“””
x = [None] * 43
print(x)
x[42] = ‘Foobar’
print(x)

x = {}
x[48] = ‘Foobar’
print(x)

# 一个简单的数据库
# 一个用人名用作健的字典。每个人都用一个字典表示
# 字典包含健“phone”和“address”,它们分别于电话号码和地址相关联

people = {
‘Alice’: {
‘phone’: ‘2341’,
‘addr’: ‘Foo drive 23’
},
‘Beth’: {
‘phone’: ‘9102’,
‘addr’: ‘Bar street 42’
},
‘Cecil’: {
‘phone’: ‘3158’,
‘addr’: ‘Baz avenue 90’
}
}

# 电话号码和地址描述性标签,供打印时使用
labels = {
‘phone’: ‘phone number’,
‘addr’: ‘address’
}

# name = input(‘Name: ‘)
name = ‘Alice’
# 要查找电话还是地址
# request = input(‘Phone number (p) or address (a)?’)
request = ‘p’
# 使用正确的key
if request == ‘p’: key = ‘phone’
if request == ‘a’: key = ‘addr’

# 仅当名字是字典包含的键时才打印信息:
if name in people: print(“{}’s {} is {}.”.format(name, labels[key], people[name][key]))

“””4.2.3 将字符串格式设置功能用于字典”””

phonebook = {
‘Alice’: ‘2341’,
‘Beth’: ‘9102’,
‘Cecil’: ‘3258’
}
print(“Cecil ‘s phone number is {Cecil}.”.format_map(phonebook))

template = ”'<html>
<head><title>{title}</title></head>
<body>
<h1>{title}</h1>
<p>{text}</p>
</body>
”’
data = {
‘title’: ‘My Home Page’,
‘text’: ‘Wellcome to my home page!’
}
print(template.format_map(data))

“””4.2.4 字典方法”””
# clear
# 没有返回值
d = {}
d[‘name’] = ‘Gumby’
d[‘age’] = 42
print(d)
returned_value = d.clear()
print(returned_value)

# 给x赋值空值对y没有影响
x = {}
y = x
x[‘key’] = ‘value’
print(y)
x = {}
print(x)
print(y)

# 清空x的值,y 也跟随清空
x = {}
y = x
x[‘key’] = ‘value’
print(y)
x.clear()
print(y)
print(x)

# copy
# 浅复制副本与原件的值指向通一个内存指向
# 深复制值也会创建副本
x = {
‘username’: ‘admin’,
‘machines’: [‘foo’, ‘bar’, ‘baz’]
}
y = x.copy()
y[‘username’] = ‘mlh’
y[‘machines’].remove(‘bar’)
print(x)
print(y)

from copy import deepcopy

d = {}
d[‘names’] = [‘Alfred’, ‘Bertrand’]
c = d.copy()
dc = deepcopy(d)
d[‘names’].append(‘Clive’)
print(c)
print(dc)

# fromkeys 也可以用dict函数创建
dict_a = dict.fromkeys([‘name’, ‘age’])
print(dict_a)

dict_a = dict.fromkeys([‘name’, ‘age’], ‘(unknown)’)
print(dict_a)

# get
“”””
跟print不同当值不存在的时候可以定义返回值,print是抛出异常
d = {}
print(d[‘name’])
“””
d = {}
print(d.get(‘name’))
print(d.get(‘name’, ‘N/A’))

items = [(‘name’, ‘Eric’), (‘age’, ’42’)]
d = dict(items)
print(d)
print(d.get(‘name’, ‘N/A’))

# 一个使用get()的数据库
people = {
‘Alice’: {
‘phone’: ‘2341’,
‘addr’: ‘Foo drive 23’
},
‘Beth’: {
‘phone’: ‘9102’,
‘addr’: ‘Bar street 42’
},
‘Cecil’: {
‘phone’: ‘3158’,
‘addr’: ‘Baz avenue 90’
}
}

# 电话号码和地址描述性标签,供打印时使用
labels = {
‘phone’: ‘phone number’,
‘addr’: ‘address’
}
# name = input(‘Nmae: ‘)
name = ‘Alice’
# 要查找电话号码还是地址
# request = input(‘Phone number (p) or address (a)? ‘)
request = ‘a’
key = request # 如果key既不是p也不是a
if key == ‘p’: key = ‘phone’
if key == ‘a’: key = ‘address’

# 使用get提供默认值
person = people.get(name, {})
label = labels.get(key, key)
# print(name)
# print(person)
result = person.get(key, ‘not available’)

print(“{}’s {} is {}.”.format(name, label, result))

# items
d = {
‘title’: ‘Python Web Site’,
‘url’: ‘http://www.python.org’,
‘spam’: 0
}
it = d.items()
print(len(it))
print((‘spam’, 0) in it)
d[‘spam’] = 1
print((‘spam’, 0) in it)
d[‘spam’] = 0
print((‘spam’, 0) in it)
# 将字典的值复制到列表之中
lst_a = list(d.items())
print(lst_a)

# key
people = {
‘Alice’: {
‘phone’: ‘2341’,
‘addr’: ‘Foo drive 23’
},
‘Beth’: {
‘phone’: ‘9102’,
‘addr’: ‘Bar street 42’
},
‘Cecil’: {
‘phone’: ‘3158’,
‘addr’: ‘Baz avenue 90’
}
}
print(people.keys())

# pop
d = {‘x’: 1, ‘y’: 2}
print(d)
d.pop(‘x’)
print(d)

# popitem随机弹出字典无顺序 列表是弹最后一
d = {
‘title’: ‘Python Web Site’,
‘url’: ‘http://www.python.org’,
‘spam’: 0
}
print(d)
print(d.popitem())
print(d)

# setdefault 如果键存在保存默认值,如果不存在修改为默认值
d = {}
d.setdefault(‘name’, ‘N/A’)
print(d)
d[‘name’] = ‘Cumby’
d.setdefault(‘name’, ‘N/A’)
print(d)

# update使用一个字典中的项来跟新字典,不存在就添加,如果包含相同的键的项,就替换它
d = {
‘title’: ‘Python Web Site’,
‘url’: ‘http://www.python.org’,
‘changed’: ‘Mar 14 22:09:15 MET 2016’
}
print(d)
x = {‘title’: ‘Python Language Website’}
d.update(x)
print(d)

# values 打印字典的值
d = {
‘1’: 1,
‘2’: 2,
‘3’: 3,
‘4’: 1
}
print(d.values())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值