Python元组(tuple)和字典(dict)的合并使用
Python 包含6种数据类型,其中Number(数字)、String(字符串)、Tuple(元组)、 List(列表)、Dictionary(字典)、Set(集合);
1.回顾Tuple(元组)的常用方法:
- Tuple的创建:tuple()方法创建,或者小括号的方式,有时也直接省略小括号
a = tuple(range(10)) b = tuple('hkd') c = tuple([1,2,3])
PS:tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。 list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。
- Tuple的常用方法:基本上跟列表(list)一样,不过,元组的特殊性就在于元素是不可变系列(不能修改元组中的元素)
a = (1, 1, 2, 8, 4, 1, 6, 7, 8, 9) # 元组的切片方法 print(f"取前四个元素:{a[:4]}") # 元组的计数方法 print(f"1出现的次数:{a.count(1)}次" ) # 元组的索引 print( f"数字8第一次出现的索引位置:{a.index(8)}") # 元组的排序 使用内置函数sorted(tupleObj),并生成新的列表对象。 print(f"元组a的排序:{sorted(a)}")
- ps:元组的元素不能修改
- 列表与元组的结合使用:zip(列表1,列表2,...)将多个列表对应位置的元素组合成为元组(多出来的元素则忽视), 并返回这个zip对象,需要通过list方法转为列表
a = [10,20,30] b = [40,50,60,80,100] c = zip(a,b) print(f"c的类型为:{type(c)}") # 将c转化为列表 list(c)
-
元组总结1 元组的核心特点是:不可变序列。2 元组的访问和处理速度比列表快。3 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用
2.回顾dict(字典)的常用方法:
- 字典的创建:通过{}、dict()来创建字典对象。
# ①:{}方式创建 a = {'name':'lxx','age':18,'job':'salmer'} print(f"花括号方式创建a为:{a}") # ②:dict()方式创建 b = dict(name='lxx',age=18,job='salmer') print(f"dict方式创建b为:{b}") # ③:zip()方式创建 k = ['name','age','job'] v = ['lxx',18,'salmer'] w = dict(zip(k,v)) print(f"zip方式创建w为:{w}") # ④:通过fromkeys创建值为空的字典 f = dict.fromkeys(['name','age','job']) print(f"fromkeys创建f为:{f}")
-
字典元素的访问
a = {'name':'lxx','age':18,'job':'salmer'} # 通过get()方法获得“值”。❤❤推荐使用。 print(f"job对应的值为:{a.get('name')}") # 通过 [键] 获得“值”。若键不存在,则抛出异常。 print(f"age对应的值为:{a['age']}") # 列出所有的键值对 print(f"a的所有键值对为:{a.items()}") # 列出所有的键,列出所有的值 print(f"a的所有键为:{a.keys()}") print(f"a的所有值为:{a.values()}") # len() 键值对的个数 print(f"a的键值对个数为:{len(a)}个") # 检测一个“键”是否在字典中 print(f"name是否是字典a的键:{'name' in a}")
-
字典元素添加、修改、删除
a = {'name':'lxx','age':18,'job':'salmer'} # 新增键值对,若没有则新增,有则重新赋值 a['age'] = 20 a['phone'] = 15910001000 print(f"a的值为:{a}") # del():字典中元素的删除 del(a['job']) print(f"a的值为:{a}") # pop() 删除指定键值对,并返回对应的“值对象” a.pop('phone') print(f"a的值为:{a}") # popitem() :随机删除和返回该键值对。字典是“无序可变序列”,因此没有第一个元素、最后一个元素的概念; a.popitem() print(f"a的值为:{a}") # clear() 删除所有键值对 a.clear() print(f"a的值为:{a}")
3.元组(tuple),字典(dict)和列表(list)的合并使用
- 题目来源:Convert and Aggregate - python coding challenges - Py.CheckiO
- 大致要求:传入一个元组列表,每个元组由两个值组成:一个字符串和一个整数。需要创建并返回字典,其中键是来自输入元组的字符串值,值是聚合(求和)
整数,每个特定键的输入元组中的值。生成的字典不应包含具有空键或零值的项目。
- 例如:
- 完整代码:
def conv_aggr(li:list): my_dict = {} for k,v in li: if k not in my_dict: my_dict[k] = v else: my_dict[k] += v for i in list(my_dict.keys()): if my_dict[i] == 0: del my_dict[i] if '' in my_dict.keys(): del my_dict[''] return my_dict