python基础知识整理 03-字典、集合

目录

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)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轨迹|

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值