Python 字典和集合

1. Python中字典是一种映射类型,key是关键字,value是对应的值

字典用{}来定义,字典由多个键和其对应的值构成。每一对键值组合称为项

2. 创建字典

dict1 = {}
dict1 = dict((('o', 10), ('w', 20), ('e', 30), ('n', 40)))  # dict()函数的参数可以是一个序列,元组或列表都可以
print(dict1)
dict2 = dict([('a', 10), ('b', 20), ('c', 30)])  # dict()参数是列表
print(dict2)
dict3 = dict(a = 1, b = 2, c = 3)  # 键的位置不能加引号
print(dict3)
dict4 = {}
print(dict4.fromkeys((1, 2, 3)))

3 字典赋值

dict1['w'] = 79
print(dict1)
dict5 = {}
print(dict5.fromkeys((1, 2, 3), 'number'))
dict6 = {}
print(dict6.fromkeys((1, 2, 3,), ('one', 'two', 'three')))  # fromkeys()方法不会将one,two,three分别赋值

4.字典的内置方法

在序列中一个不存在赋值会报错,在字典中,会自动创建相应的键并添加对应的值进去

fromkeys()用于创建并返回一个新的字典,见上

keys()用于以列表的形式返回字典中的键

values()以列表的形式返回字典中的值

items()返回字典中的键值对

print(dict2.keys())
print(dict2.values())
print(dict2.items())

get()访问字典项。当访问的键不存在的时候,只返回一个none,表示什么都没有找到,或可在

第二个参数设置对应的默认返回值

print(dict2.get('r'))
print(dict2.get('h', '没有'))

清空字典用clear(),

注意:用变量名赋值一个空字典的方法,a,b都指向同一个字典,通过将a重新指向一个空字典

a只是指向了一个新的空字典,原字典依然没有清空。

a = {'姓名': 'owen'}
b = a  # 此时a,b都指向同一个字典
a = {}  # a指向一个空字典,但是b指向的字典依然没有清空
print(a)
print(b)
c = {'姓名': 'owen'}
b = c
print(c.clear())
print(b.clear())

复制字典用copy()

copy() d,h两者地址不一样,所有两者不是指向同一个字典,如果改变字典中键对应的值,则d改变,h不变

d = {'姓名': 'owen'}
f = d
h = d.copy()
d['姓名'] = 'charlin'
print(d)
print(f)
print(h)

5.删除字典

pop()弹出指定键对应的值,popition()是弹出一个键值对

print(dict2.pop('b'))
print(dict2.popitem())  # 随机弹出
print(dict2)

6.添加字典

setdefault()在字典中存在对应键 返回其对应的值,不存在则添加

t = {1: 100, 2: 200, 3: 300}
print(t.setdefault(2))
print(t.setdefault(6))
print(t)

7.更新字典 

update()

d = {1:3}
print(d)
d.update({1: 4})
print(d)

8. 收集参数

**参数  表示将参数打包成字典的形式

def test(**params):
    print('有%d个参数' % len(params))
    print('他们分别是:', params)

test(a = 1, b = 2, c = 3)

集合

1. 用{}括起来的,但是没有体现映射关系,集合中的元素是无序的,集合中的元素输出后都是唯一的

num1 = {}
num1 = {1, 2, 3, 4, 5}
print(num1)

2.创建集合

set1 = {}
set2 = set([1, 2, 3, 4])  # 用set()创建集合参数为列表
print(set1)
print(set2)


3.去除列表里的重复的元素

list1 = [1, 2, 3, 4, 4, 2, 7, 8, 9]
list1 = list(set(list1))  # set()创建集合,集合元素是唯一的,所以可以去重,自动排序
print(list1)

4. 访问集合

因为集合中的元素是无序的,所有不能利用索引下标来进行访问,但是可以用循环迭代把集合中的元素读取出来

set2 = {1, 3, 2, 4, 5, 9, 5, 7, 6, 8}  # 集合中的元素是无序,如果元素是数字,输出时自动排序,如果有字符串,输出无序

for i in set2:
    print(i, end = ' ') 

5. in 或者 not in 判断一个元素是否在集合里

print(0 in set2)
print(3 in set2)
print(0 not in set2)

6.不可变集合

使用frozenset()将集合不能随意删除和修改

set3 = frozenset({1, 2, 3, 4})
set3.add(8)
print(set3


猜你喜欢

转载自blog.csdn.net/sinat_24320969/article/details/80928671