组合数据类型包含一组数据且作为单一管理结构的数据类型。python的组合数据类型有三大类七小类。
(1)集合:无序、非一致性、无索引;分为可变集合set、不可变集合frozenset。
(2)序列:有序、非一致性/一致性、序号索引;分为元组、列表、字符串、字节串。
(3)字典:无序、非一致性、自定义索引:字典。
组合数据类型又可以分为可变类型和不可变类型:
(1)可变类型:值可以改变的类型,例如:列表、字典等。
(2)不可变类型:值不可变,例如有数值类型、字符串、字节串、元组等。
【集合的创建】
可变集合的创建:大括号{}和set函数。不可变集合的创建frozenset({})形式。
【元组的创建】
元组类型的常见可以使用:逗号,或者小括号();以及使用tuple()方法来创建。注意元组类型创建后一般不能被修改的序列类型。
【列表创建】
列表的创建使用:[]或者list()函数创建。注意列表类型创建后可以随时被修改的。
【字典的创建】
字典的创建:使用大括号{}或者dict()函数创建,空大括号{}创建字典类型,而不是集合类型。
#####################python中列表的使用##########################
lt=[] #定义空列表
lt +=[1,2,3,4,5,6,7,8] #向lt列表中新增5个元素
lt[2]=6 #修改列表中第2个索引,索引下表从0开始
print(lt)
lt.insert(2,7) #向lt列表第2个位置增减一个元素
print(lt)
del lt[1] #从lt中第1个位置删除一个元素
del lt[1:4] #删除lt列表中的第1-3位置元素
print(0 in lt) #判断列表lt中是否包含数字0,返回值为False
lt.append(0) #向lt列表中新增数字0
print(lt.index(0)) #lt列表中数字0的索引是多少
print(len(lt)) #lt列表的长度
print(max(lt)) #lt列表中最大的元素
print(lt.clear()) #清空lt列表,返回值为None
【列表类型的应用场景说明】列表使用与组织数据。
(1)列表用来组织数据,非常灵活,它是最常用的组合数据类型;
(2)列表可以用于表示一组有序数据或一组顺序无关数据,进而操作他们;
(3)列表将用于表达一二维数据;
(4)列表计算性能并不高,对于大规模数据,建议采用第三方数据结果,如ndarray。
【列表中append()、extend()、+、+=操作的区别】
省份运算符用于比较两个对象的内存地址是否一致,也就是是否对同一个对象的引用。
在python中针对None比较时,建议使用is判断:
(1)is运算符是判断两个标识符是不是引用同一个对象;x is y,类似id(x)==id(y)。
(2)is not运算符是判断两个标识符是不是引用不同对象;x is not y,类似id(x)!=id(y)。
import operator
# operator的itemgetter(0)表示键key,operator的itemgetter(1)表示值value
if __name__ == '__main__':
#1、对字典进行排序
my_dict = {"a":1,"d":-2,"b":3,"e":2,"c":0,"f":1}
# 1.1对字典的key判刑
sort_dict_key = sorted(my_dict)
print(sort_dict_key) #['a', 'b', 'c', 'd', 'e', 'f']
#1.2 对字典的值进行排序
sort_dict_value = sorted(my_dict.values(),reverse=True)
print(sort_dict_value) # [3, 2, 1, 1, 0, -2]
#1.3 按照字典key进行降序
sort_dict = sorted(my_dict.items(),key=lambda x:x[0],reverse=True)
print(sort_dict) #[('f', 1), ('e', 2), ('d', -2), ('c', 0), ('b', 3), ('a', 1)]
#operator.itemgetter(1)字典的值value,对值进行升序
sort_dict2 = sorted(my_dict.items(),key=operator.itemgetter(1),reverse=False)
print(sort_dict2)# [('d', -2), ('c', 0), ('a', 1), ('f', 1), ('e', 2), ('b', 3)]
# 列表中的字典排序
all_data=[{"city":"北京","min_temp":0},
{"city": "天津", "min_temp": -8},
{"city": "石家庄", "min_temp": 3},
]
# 默认reverse值为False,当reverse=True为降序,
sort_result=sorted(all_data,key=operator.itemgetter('min_temp'),reverse=True)
print(sort_result)
all_data =[]
for table in tables:
trs = table.find_all('tr')[2:]
for index,tr in enumerate(trs):
tds= tr.find_all('td')
city_td = tds[0]
if index==0:
city_td=tds[1]
city = list(city_td.stripped_strings)[0]
# 取出最低气温
temp_td = tds[-2]
min_temp =list(temp_td.stripped_strings)[0]
all_data.append({"city":city,"min_temp":int(min_temp)}) # 把最低气温进行排序是为了排序
all_data.sort(key=lambda x:x["min_temp"],reverse=False) # reverse=False表示最低气温按照升序