Python(6)dict和set

13、dict

dict很像js里面的object(对象)。廖雪峰说像其他语言里的Map,但我觉得还是有所不同,至少和js里不同。

理由如下:

【1】不是Map,如果是Map,那么key应该可以用list(数组)或者其他的。但至少不能用数组,会报错TypeError: unhashable type: 'list'

bar = []
foo = {bar: 1}
print(foo[bar])

# Traceback (most recent call last):
#   File "D:/study notes/Python/笔记/test.py", line 2, in <module>
#     foo = {bar: 1}
# TypeError: unhashable type: 'list'

【2】和js里对象的使用方法也有区别。比较典型的就是,如果key是字符串,那么必须用引号将key包裹起来,而不能直接使用字符串。避免和变量混淆

foo = {'a': 1}
print(foo['a'])
# 1

如以上代码,如果写成foo = {a: 1}那就会抛错NameError: name 'a' is not defined

原因是:将a认为是变量名,而不是字符串

除了字符串外,key也可以用数字,True/False,None。

【3】但和Map有所相像,例如内置了get()方法

dict.get(key, defaultValue)

简单来说,就是调用dict的get方法,去尝试获取参数一作为key的value。

如果获取失败,并且没有参数二,那么返回None,否则返回预置的参数二。

foo = {}
print(foo.get('a'))    # None
print(foo.get('a', 'default'))    # default

可以修改默认的值,方法如下:

dict.setdefault(key, defaultValue)

假如在取值的时候,如果本身没有值,那么会获取通过这个设置的默认值(即参数二)。并且优先级高于dict.get()的参数二

foo = {}
foo.setdefault('b', 2)
print(foo.get('b', 3))  # 2
print(foo['b'])    # 2
print('b' in foo)  # True

【4】最常规取值方式:

通过中括号内放置变量名或者字符串的方法,说起来很复杂,实际上就是如以下代码这么简单的办法。

但缺点是如果找不到,会抛出异常

foo = {'a': 1}
print(foo['a'])    # 1

这种方式的好处是可以直接用这个来进行赋值。

如代码:

foo = {}
foo['b'] = 1
print(foo['b'])  # 1

【5】查看某个dict是否有某个key的值:

key in dict

如果有,则返回True,没有就返回False

foo = {'a': 1}
print('a' in foo)    # True
print('b' in foo)    # False

14、set

是一种元素的集合,并且同一个集合里,元素是不重复的。类似js里的set结构。

具有以下特点:

  1. 互不相同;
  2. 元素不能是可变对象。即可以是数字、字符串、False(但不能是True)、Nonetuple(不可变数组)。不能是dict或list(但js里是可以的)。

声明时直接添加元素:

以数组的形式作为参数,并且参数可选。

foo = set([element1, element2, …])

即放在list里作为set的参数,示例代码如下:

foo = set([1, 'a', False, None, (2, 3)])
print(foo)  # {False, 1, None, (2, 3), 'a'}

添加新元素

foo.add(element)

一次只能添加一个,并且不能add连写。返回值是None

添加类型错误的变量会报错,如果是重复的变量不会添加进去。

示例:

foo = set()
foo.add(1)
print(foo)    # 1
foo.add(1)
print(foo)    # 1

删除元素:

foo.remove(element)

从set里移除指定元素,返回值是None。

  1. 如果该元素存在,则移除;
  2. 该元素不存在,则报错
foo = set([1])
print(foo)  # {1}
foo.remove(1)
foo = set()
foo.remove(1)
# Traceback (most recent call last):
#   File "D:/study notes/Python/笔记/test.py", line 2, in <module>
#     foo.remove(1)
# KeyError: 1

获取两个set的交集

foo & bar

交集是啥不懂的话我就很尴尬了,就是指两个集合里都有的元素。

返回值是一个新的set。

foo = set([1, 2, 3])
bar = set([2, 3, 4])
print(foo & bar)    # {2, 3}

获取两个set的并集

foo | bar

并集就是只要某个元素在两个set中的至少一个里面存在,那么他就在并集中。

返回值是一个新的set。

foo = set([1, 2, 3])
bar = set([2, 3, 4])
print(foo | bar)    # {1, 2, 3, 4}

获取set元素个数

len(set)

返回值是数字。

foo = set([1, 2, 3])
print(len(foo))  # 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的list(列表),tuple(元组),dict(字典)和set(集合)是常见的数据结构。 1. 列表(list)是一个可变的、有序的元素集合。可以通过方括号[]来创建一个列表,列表中的元素可以是任意类型,并且可以重复。列表提供了丰富的操作方法,如添加元素、删除元素、获取元素等。 2. 元组(tuple)是一个不可变的、有序的元素集合。可以通过小括号()来创建一个元组,元组中的元素可以是任意类型。元组一旦创建后,不能修改其元素的值。元组通常用于存储不可变的数据,如坐标位置、颜色等。 3. 字典(dict)是一种键值对(key-value)的数据结构。可以通过花括号{}来创建一个字典,字典中的元素是无序的,并且每个元素由一个键和对应的值组成。字典中的键必须是唯一的,而值可以是任意类型。字典提供了根据键获取值、添加键值对、删除键值对等操作。 4. 集合(set)是一个无序的、不重复的元素集合。可以通过花括号{}或set()函数来创建一个集合,集合中的元素不能重复。集合提供了并集、交集、差集等常用的数学运算操作,同时还支持元素的添加、删除等操作。 在编程中,根据具体的需求选择使用合适的数据结构能够更高效地处理数据,并且提供相应的操作方法方便开发。以上是对Python中常见的列表、元组、字典和集合的简要介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值