python---字典

                                                 字典

1.字典的用途

字典的名称指出了这种数据结构的用途。普通图书适合按从头到尾的顺序阅读,如果你愿意,可以快速翻到任何一页,这有点像python中的列表。字典旨在让你能够轻松的找到特定的单词(键/key),以获取其定义(值/value)。
在很多情况下,使用字典都比使用列表更合适。下面是python字典的一些用途
1)表示棋盘的状态,其中每个键都是由坐标组成的元组;
2)储存文件修改时间,其中的键名为文件;
3)数字电话/地址簿;
假设有如下名单
>>> names = ['Alice', 'Benth','Cecil','Dee-Dee','Earl']
如果要创建一个小型数据库,在其中储存这些人的电话号码,该如何办呢?一种办法时再创建一个列表。假设只储存四位的分机号,这个列表将类似于:
>>> number = ['2341','9102','3158','0142','5551']
创建这些列表后,就可以像下面这样查找Cecil的电话号码了:
>>> number[names.index('Cecil')]
'3158'
这可行但不使用。实际上,希望能够象下面
>>> phonebook['Cecil']
'3158'
如何达成这个目标呢?只要phonebook是个字典就行了

2.字典的创建和使用

字典类似于下面的表示方式:
phonebook = {'Alice':'2341','Benth':'9102','Cecil':'3258'}
字典由键(key)以及其相应的值(value)组成,这种键-值对 称为(item)。在前面的示例中键为名字,而值为电话号码。每个键与其值之间都用冒号(:)分隔,项(item)之间用逗号分隔,而整个字典放在花括号内。空字典(没有任何项)用两个花括号表示,类似于这样:{}。
注意:在字典中键必须是独一无二的,而字典中的值无需如此

3.函数dict

可使用函数dict从其他映射(如其他字典)或键-值对序列创建字典

还可以使用关键字实参来调用这个函数


len(d) 返回字典d包含的项(键-值对)数。

d[k]返回与键k相关的值。

d[k] = v将值v关联到键k

del d[k]删除键为k的项

k in d 检查字典d是否包含键为k的项

键的类型:字典中的键可以是整形,但并非必须是整数。字典中的键可以是任何不可变的类型,如浮点数(实数),字符串或者元组

自动添加:即便是字典中原本没有的键,也可以给他赋值,这将在字典中创建一个新项。然而,如果不使用append或其他类似的方法,就不能给列表中没有的元素赋值

4.字典的特性

# 索引, 切片, 重复, 连接, 成员操作符

d = dict(a=1, b=2)

print(d)
# print(d[0])
# print(d[1:])
# print(d+d)
# print(d*3)

# 成员操作符, 默认判断key值是否存在.
print('a' in d)
print(1 in d)


# for循环: 默认遍历字典的key值;
for i in d:
    print(i)


for i,v in enumerate(d):
    print(i, '-----', v)

5.字典的增加

d = dict(a=1, b=2)

# 添加或者更改key-value对
d['g'] = 10
d['a'] = 10
print(d)

# # update:
# #   如果key值已经存在, 更新value值;
# #   如果key值不存在, 添加key-value值;
# d.update({'a':4, 'f':1})
# print(d)
#
#
# # setdefault
# # #   如果key值已经存在, 不做修改;
# #     如果key值不存在, 添加key-value值;默认情况下value值为None
# d.setdefault('g', 10)
# print(d)

6.字典的删除

d = dict(a=1, b=2, c=3)

# pop:弹出指定key-value值
# d.pop('a')
# print(d)


# popitem
# d.popitem()
# print(d)


# del d['a']
# print(d)

d.clear()
print(d)

7.字典的修改与查看

services = {
    'http':80,
    'mysql':3306
}


# 查看字典里面所有的key值
print(services.keys())

# 查看字典里面所有的value值
print(services.values())

# 查看字典里面所有的key-value值
print(services.items())

# 遍历
for k,v in services.items(): # k,v = ('http', 80)
    print(k , '--->', v)

for k in services:
    print(k, '--->', services[k])


# 查看指定key对应的value值, 注意: key不存在, 就会报错
print(services['http'])
# print(services['https'])

#
# if 'https' in services:
#     print(services['https'])
# else:
#     print('key not exist')


# get方法获取指定可以对应的value值
#   如果key值存在, 返回对应的value值;
#   如果key值不存在, 默认返回None, 如果需要指定返回的值, 传值即可;
print(services.get('https', 'key not exist'))

猜你喜欢

转载自blog.csdn.net/suifengOc/article/details/81638499