python的字典与集合

字典

字典是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。键可能是数、字符串或元组。

字典的基本操作

比如你想要在python中创建一个电话簿,使用字典是最合适的。字典由键及其相应的值组成,这种键—值对称为项(item)。在下面的示例中,键为名字,而值为电话号码。每个键与其值之间都用冒号(:)分隔,项之间用逗号分隔,而整个字典放在花括号内。空字典(没有任何项)用两个花括号表示,类似于下面这样:{}。

>>>phonebook = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>>phonebook['Cecil']
'3158' 

1.函数 dict

#可使用函数dict从其他映射(如其他字典)或键值对序列创建字典。
>>>items = [('name', 'Gumby'), ('age', 42)]
>>>d = dict(items)
>>>d
{'age': 42, 'name': 'Gumby'}
>>> d['name']
'Gumby'
#还可使用关键字实参来调用这个函数
>>>d = dict(name='Gumby', age=42)
>>>d
{'age': 42, 'name': 'Gumby'} 

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

>>>x = []
>>>x[42] = 'Foobar'
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
IndexError: list assignment index out of range
>>>x = {}
>>>>x[42] = 'Foobar'
>>>x
{42: 'Foobar'} 

3.format_map

>>>phonebook
{'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}
>>>"Cecil's phone number is {Cecil}.".format_map(phonebook)
"Cecil's phone number is 3258." 

4.clear
删除所有的字典项

>>> d={"name":"Tom"}
>>> d.clear()
>>> d
{}

5.copy
浅复制
没有拷贝子对象,所以原始数据改变,子对象会改变。

>>> x
{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y=x.copy()
>>> y['username']=1
>>> x
{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y['machines'].remove('bar')
>>> y
{'username': 'mlh', 'machines': ['foo', 'baz']}
>>> x
{'username': 'admin', 'machines': ['foo', 'baz']}

深复制
复制值及其包含的所有值

>>> from copy import deepcopy
>>> d = {}
>>> d['names'] = ['Alfred', 'Bertrand']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'names': ['Alfred', 'Bertrand']} 

6.fromkeys

#方法fromkeys创建一个新字典,其中包含指定的键,且每个键对应的值都是None。
>>> {}.fromkeys(['name', 'age'])
{'age': None, 'name': None} 

集合

集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合的内置方法
在这里插入图片描述

发布了25 篇原创文章 · 获赞 8 · 访问量 934

猜你喜欢

转载自blog.csdn.net/weixin_44617944/article/details/102767635