Python基础语法小结3(元组&字典)

Python基础语法小结3(元组&字典)

1.元组

  • Python的元组与列表类似,不同之处在于元组的元素不能修改。

  • 元组使用小括号,列表使用方括号。

  • 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"
  • 元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
tup1 = (12, 34, 56)
tup2 = ('abc', 'xyz')

# 创建一个新的元组
tup3 = tup1 + tup2
print(tup3)

以上实例输出结果

(12, 34, 56, 'abc', 'xyz')
  • 元组中只包含一个元素时,需要在元素后面添加逗号,一下2中写法均可
tup = 50,
tup1 = (50,)
print(tup)
print(tup1)

以上实例输出结果

(50,)
(50,)
  • 元组运算符

    Python 表达式 结果 描述
    len((1, 2, 3)) 3 计算元素个数
    (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
    (‘Hi!’,) * 4 (‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’) 复制
    3 in (1, 2, 3) True 元素是否存在
    for x in (1, 2, 3): print(x) 1 2 3 迭代

2.字典

  • 字典是另一种可变容器模型,且可存储任意类型对象。

  • 字典的每个键值 key=>value 对用冒号( : )分割,每个键值对之间用逗号 (, )分割,整个字典包括在花括号 {} 表示

    dic = {key1 : value1, key2 : value2 }
    
  • 字典的基本用法

  • 应牢记字典包含多个 key-value 对,而 key 是字典的关键数据,因此程序对字典的操作都是基于 key 的。基本操作如下:

    • 通过 key 访问 value 。
    • 通过 key 添加 key-value 对。
    • 通过 key 删除 key-value 对。
    • 通过 key 修改 key-value 对。
    • 通过 key 判断指定 key-value 对是否存在。
    • 通过 key 访问 value 使用的也是方括号语法
  • 字典的常用方法

    • 字典由 dict 类代表,因此我们同样可使用 dir(dict) 来查看该类包含哪些方法。在交互式解释器中输入 dir(dict) 命令,将看到如下输出结果:

      >>> dir(dict)
      ['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
      >>>
      
  • clear()方法

clear() 用于清空字典中所有的 key-value 对,对一个字典执行 clear() 方法之后,该字典就会变成一个空字典。例如如下代码:

cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
print(cars) # {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
# 清空cars所有key-value对
cars.clear()
print(cars) # {}
  • get()方法

get() 方法其实就是根据 key 来获取 value,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。

cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
# 获取'BMW'对应的value
print(cars.get('BMW')) # 8.5
print(cars.get('PORSCHE')) # None
print(cars['PORSCHE']) # KeyError
  • 字典的输出

    d = {'name': '孙悟空', 'age': 18, 'gender': '男'}
    print(d.keys())       # 输出所有的key值
    print(d.values())     # 输出所有的value值
    
    # 通过遍历keys()来获取所有的键
    for k in d.keys():
        print(k, d[k])
    

以上输出的结果:

dict_keys(['name', 'age', 'gender'])
dict_values(['孙悟空', 18, '男'])
name 孙悟空
age 18
gender 男
  • **浅拷贝(copy):**拷贝父对象,不会拷贝对象的内部的子对象。

    >>>a = {1: [1,2,3]}
    >>> b = a.copy()
    >>> a, b
    ({1: [1, 2, 3]}, {1: [1, 2, 3]})
    >>> a[1].append(4)
    >>> a, b
    ({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
    

    b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

Python基础语法小结3(元组&字典)

  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

    >>>import copy
    >>> c = copy.deepcopy(a)
    >>> a, c
    ({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
    >>> a[1].append(5)
    >>> a, c
    ({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
    

    b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

Python基础语法小结3(元组&字典)

3.作业

作业1:a = {“name”:“123”,“data”:{“result”:[{“src”:“python1”},{“src”:“python2”},{“src”:“python3”}]}} 找到python1/python2/python3

a = {"name": "123", "data": {"result": [{"src": "python1"}, {"src": "python2"}, {"src": "python3"}]}}
for i in a["data"]["result"]:
    print(i["src"])

作业2:

有如下值列表[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key的值中,
将小于66值保存至第二个key的值中。
lst = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dic_lst = {">=66": [], "<66": []}
for i in lst:
    if i >= 66:
        dic_lst[">=66"].append(i)
    else:
        dic_lst["<66"].append(i)
print(dic_lst)

输出结果:

{'>=66': [66, 77, 88, 99, 90], '<66': [11, 22, 33, 44, 55]}
上一篇:每日一题 27


下一篇:新年的巧克力棒 UniversalOJ - 66