目录
1 字典
1.1 字典创建
1.2 字典操作
1.2.1 使用[]添加或修改元素
1.2.2 update()合并字典
1.2.3 del删除具有指定键的元素
1.2.4 clear()清除所有元素
1.2.5使用in判断是否存在
1.2.6 使用[key]获取元素
1.2.7 获取字典所有键、值、键值对
1.2.8 字典遍历
1.2.9 字典、元组、列表转换
2 集合
2.1 set集合创建
2.2 set添加元素
2.3 set元素删除
2.4 set元素遍历
2.5 set并集、交集
2.6 set应用:统计字符个数
1 字典
1.1 字典创建
用大括号{}将一系列以逗号隔开的键值对(key:value)包裹起来即可以进行字典的创建。最简单的字典是空字典,不包括任何的键值对。
emptyDict = {}
info = {'name':'班长','id':100,'sex':'f','address':'地球亚洲中国北京'}
1.2 字典操作
1.2.1 使用[]添加或修改元素
向字典添加元素非常简单,只需要指定该元素的键并赋予相应的值即可。
如果该元素的键已经存在于字典中,那么该键对应的旧值会被新值取代。
如果该元素的键并未在字典中出现,则会被加入到字典。与列表不同,你不需要担心赋值过程中Python会抛出越界异常。
>> info = {'name': '班长', 'id': 100, 'sex': 'f', 'address': '地球亚洲中国北京'}
>>> info['name']
'班长'
>>> info['name'] = '小明'
>>> print(info)
{'name': '小明', 'id': 100, 'sex': 'f', 'address': '地球亚洲中国北京'}
>>> info['age'] = 18
>>> print(info)
{'name': '小明', 'id': 100, 'sex': 'f', 'address': '地球亚洲中国北京', 'age': 18}
1.2.2 update()合并字典
update()可以将一个字典的键值对赋值到另一个字典中。
如果待添加的字典于待扩充的字典包含同样的键值的话,新归入的字典的值会覆盖原有的值。
>>> dict1 = {'name': 'boby', 'age': 18}
>>> dict2 = {'sex': 'men', 'like': 'python'}
>>> dict3 = {'address': 'china', 'name': 'baby'}
>>> dict1.update(dict2)
>>> print(dict1)
{'name': 'boby', 'age': 18, 'sex': 'men', 'like': 'python'}
>>> dict1.update(dict3)
>>> print(dict1)
{'name': 'baby', 'age': 18, 'sex': 'men', 'like': 'python', 'address': 'china'}
1.2.3 del删除具有指定键的元素
>>> dict1 = {'name': 'boby', 'age': 18}
>>> del dict1['age']
>>> print(dict1)
{'name': 'boby'}
1.2.4 clear()清除所有元素
使用clear(),或者给字典重新赋值一个空字典{},可以将字典中所有元素删除。
>>> dict1 = {'name': 'boby', 'age': 18}
>>> dict1.clear()
>>> print(dict1)
{}
>>> dict1 = {'name': 'boby', 'age': 18}
>>> dict1 = {}
>>> print(dict1)
{}
1.2.5使用in判断是否存在
如果你希望判断某一个键是否存在于一个字典中,可以使用in
>>> dict1 = {'name': 'boby', 'age': 18}
>>> 'name' in dict1
True
>>> 'sex' in dict1
False
1.2.6 使用[key]获取元素
这是对字典最常用进行的操作,只需要指定字典名和键即可获得对应的值。
如果字典中不包含指定的键,会抛出一个异常。
>>> dict1 = {'name': 'boby', 'age': 18}
>>> dict1['name']
'boby'
>>> dict1['sex']
Traceback (most recent call last):
File "<input>", line 1, in <module>
KeyError: 'sex'
有两种方法可以避免这种情况的发生。
第一种是在访问前通过in测试键是否存在;
>>> dict1 = {'name': 'boby', 'age': 18}
>>> if key in dict1:
... print(dict[key])
... else:
... print('键值不存在')
...
键值不存在
第二种使用字典函数get()。需要指定字典名,键值和一个可选值。
如果键存在,则会得到对应的值,如果不存在,将会返回可选值,如果没有指定可选值,会得到None。
>>> dict1 = {'name': 'boby', 'age': 18}
>>> dict1.get('name')
'boby'
>>> dict1.get('sex', '键值不存在')
'键值不存在'
>>> dict1.get('sex')
None
1.2.7 获取字典所有键、值、键值对
使用keys()可以获得字典中所有的键。在Python2中,keys()会返回一个列表,而在Python3中返回dict_keys类型。
使用values()可以获取字典中所有值。返回dict_values类型
使用items()函数可以获取字典中所有的键值对。返回dict_items类型
>>> dict1 = {'name': 'boby', 'age': 18}
>>> dict1.keys()
dict_keys(['name', 'age'])
>>> dict1.values()
dict_values(['boby', 18])
>>> dict1.items()
dict_items([('name', 'boby'), ('age', 18)])
它的键是迭代器形式。如果我们需要一个完整的列表,在Python中,我们可以手动调用list()将dict_keys转换为列表类型。
>>> dict1 = {'name': 'boby', 'age': 18}
>>> [key for key in dict1.keys()]
['name', 'age']
>>> [value for value in dict1.values()]
>>> ['boby', 18]
>>> [items for items in dict1.items()]
[('name', 'boby'), ('age', 18)]
1.2.8 字典遍历
# 遍历字典中的key
for?key in?students.keys():
????print(key,?end=" ")
# 遍历字典中的values
for?value in?students.values():
????print(value,?end=" ")
# 遍历字典中的key-value
for?key,?value in?students.items():
????print("%s:%s"?%?(key,?value),?end=" ")
1.2.9 字典、元组、列表转换
my_list =?[1,?2,?3,?4]
my_tuple =?tuple(my_list)
print("列表转元组:",?my_tuple)
my_list =?[["name",?"John"],?["age",?18],?["sex",?"男"]]
my_dict =?dict(my_list)
print("列表嵌套转字典:",?my_dict)
print("--------------")
# 字典->列表 元组
my_dict =?{'sex':?'男',?'age':?18,?'name':?'John'}
my_list =?list(my_dict.keys())
print("字典keys转列表:",?my_list)
my_list =?list(my_dict.values())
print("字典values转列表:",?my_list)
my_list =?list(my_dict.items())
print("字典items转列表:",?my_list)
print("--------------")
my_tuple =?tuple(my_dict.keys())
print("字典keys转元组:",?my_list)
my_list =?tuple(my_dict.values())
print("字典values转元组:",?my_list)
my_list =?tuple(my_dict.items())
print("字典items转元组:",?my_list)
"""
打印结果
列表转元组: (1, 2, 3, 4)
列表嵌套转字典: {'name': 'John', 'age': 18, 'sex': '男'}
--------------
字典keys转列表: ['sex', 'age', 'name']
字典values转列表: ['男', 18, 'John']
字典items转列表: [('sex', '男'), ('age', 18), ('name', 'John')]
--------------
字典keys转元组: [('sex', '男'), ('age', 18), ('name', 'John')]
字典values转元组: ('男', 18, 'John')
字典items转元组: (('sex', '男'), ('age', 18), ('name', 'John'))
"""
2 集合
set集合是一个无序不重复元素集。由于set是一个无序集合,set并不记录元素位置,所以不支持下标操作和切片操作。
2.1 set集合创建
创建set集合,我们可以使用set函数来创建:
# 1. 创建一个空的set集合
my_set = set()
# 2. 创建一个数字元素集合,
# 注意:set会剔除重复元素
my_set = set([1, 2, 3, 4, 5, 5])
print(my_set)
# 3. 创建一个唯一元素的字符集合
my_set = set("hello world!")
print(my_set)
2.2 set添加元素
向set集合中添加元素,可以使用add()函数和update()函数,add()可以一次添加一个元素,update()函数可以一次添加多个元素.
# 创建一个空的集合
my_set = set()
# add()函数向set中添加元素
my_set.add(10)
my_set.add(20)
my_set.add(30)
# 打印set集合
print(my_set)
# update()函数添加多个元素
my_set.update([60, 40, 80, 90])
my_set.update((160, 140, 180, 190))
my_set.update("hello")
# 如果添加的元素是一个字典,那么将字典的key添加到集合中
# my_set.update({"name": "smith", "age": 1030})
print(my_set)
2.3 set元素删除
删除set集合中的元素可以使用pop()、remove()函数、discard()函数 pop()函数会删除set集合中的任意一个元素,如果set集合为空,会抛出KeyError错误。
remove(element)函数从集合中删除一个元素,如果元素不存在,会抛出KeyError错误。
discard(val)函数删除集合中的一个元素,如果不存在,则不做任何事.
my_set = set([9, 2, 3, 4, 7])
# 删除任意一个元素
my_set.pop()
print(my_set)
# 删除指定元素
my_set.remove(4)
print(my_set)
# 删除元素
my_set.discard(3)
print(my_set)
2.4 set元素遍历
# 创建一个集合
my_set = set([1, 2, 3, 4])
# 遍历set集合
for value in my_set:
print(value, end="|")
2.5 set并集、交集
my_set1 = set([1, 2, 3, 4, 5])
my_set2 = set([3, 4, 5, 6, 7])
# 1. 求两个集合的并集
new_set1 = my_set1.union(my_set2)
# 或者
new_set2 = my_set1 | my_set2
print(new_set1)
print(new_set2)
# 2. 求两个集合的交集
new_set3 = my_set1.intersection(my_set2)
# 或者
new_set4 = my_set1 & my_set2
print(new_set3)
print(new_set4)
2.6 set应用:统计字符个数
# 统计字符串中字符的个数
my_string = input("请输入任意字符串:")
# 先对字符串去重
new_string = set(my_string)
# 字典记录字符出现次数
my_count = {}
# 遍历new_string
for ch in new_string:
my_count[ch] = my_string.count(ch)
# 输出结果
print(my_count)
|