python基础07_tuple_dict
tuple 元组 dict 字典
更详细参考:https://www.cnblogs.com/jin-xin/articles/7562422.html
#!/usr/bin/env python # coding:utf-8 # Tuple 元组: 只读列表 数据可以被查询,但不能被修改 # 列表是有序的,元素可以任意修改、插入、删除,但元组不可以。
tmp1 = [] # 创建空列表 list
tmp2 = () # 创建空元组 tuple
tmp3= {} # 创建空字典 dict
tmp4= set() # 创建空集合 set
print(type(tmp1))
print(type(tmp2))
print(type(tmp3))
print(type(tmp4))
# Tuple的创建取决于逗号,所以一般在元组最后加上逗号, 尤其是只有一个元素时,末尾一定要加逗号
# 元素不可被修改,不能增加、删除
temp1 = 1,
print(type(temp1))
temp2 = (1, 2, 3, 4, 5, 6,)
print(temp2[1])
print(8 * (8))
print(8 * (8,))
# 也是可迭代对象
for i in temp2:
print(i)
# 可转换、切片、索引、
# 元组的一级元素不可修改
tu = (111,"alex",(11,22),[(33,44)],True,66,77,) tu[3][0] = "bbcc"
# 这样是修改了一级元素列表里的元素。
print(tu)
############## 方法
# count 获取指定元素在元组中出现的次数
字典 dict
#!/usr/bin/env python # coding:utf-8 info = { "k1": "v1", "k2": "v2", 12: "asdf", True:1000, (11, 22,): 1234, 2: ["abc", "defg"], "k3":["哈哈",(),33,44,{ 'kk1':'vv1', 'kk2':'vv2', 'kk3':(11,22), }], "k4":True } # 键值对,value可以是任何值 保存的时候按hash表保存 # 列表、字典不能作为字典的Key # 注意: key 不能重复,重复只会保留一个。 print(info) # 字典是无序的 v = info['k3'][4]['kk3'][0] print(v) # 删除 修改 del info['k1'] del info['k3'][4]['kk3'] # 默认循环key for item in info: print(item) print('***********************') # 循环values for item in info.values(): print(item) print("======================") # 循环key value for k,v in info.items(): print(k,v)
#!/usr/bin/env python # coding:utf-8 dic = {"k1":'v1','k3':'v3','k4':'v4','k5':'v5'} # 根据序列,创建字典,并指定统一的值 v = dict.fromkeys(['k1',123,'999'],888) print(v) # 如果取不存在的key,就会程序出错。而使用get方法取不存在的key,则会返回None # u = dic['k2'] # print(u) # u = dic.get('k2','不存在') # print(u) # 也可以在没找到key时,传个默认值 u = dic.get('k2','不存在') print(u) # pop 可以指定key来删除,popitem 则是随机删除一个 # w = dic.pop('k3') # print(w) # 也可以指定找不到时的返回值 w = dic.pop('k33','no found') print(w) # 设置值,存在则不设置,并获取存在的值 ;不存在就添加,并获取添加的值 v = dic.setdefault('k1','boy') print(dic, v) v = dic.setdefault('k11','boy') print(dic, v) ## 更新 dic.update({'k1':'11111','k4':1234}) print(dic) dic.update(k1=44456,k3="啤酒花",k4=True) # **kwargs print(dic) # 最常用的几个 keys() values() items() get update
以下是这几种类型的整理:
#!/usr/bin/env python # coding:utf-8 ## 一、数字 # int(...) ## 二、字符串 # replace /find /join /strip startswith /split /upper /lower /format temp = 'I am {name}, age:{age}' # v = temp.format(name="Tom",age=38) v = temp.format(**{"name":'alex','age':22}) # **kwargs 就表示可以传字典 print(v) ## 三、列表 # append/ extend / insert # 索引、切片、循环 ## 四、元组 # 索引、切片、循环 # 一级元素不能被修改 ## 五、字典 # get /update /keys /values /items # for 索引 dic = {'k1':'v1'} v = 'k1' in dic print(v) w = 'v1' in dic.values() print(w) ## 六、布尔值 # bool(...) # 记得这些是False就行: None "" () [] {} 0
字典应用的小例子,用来代替 switch case
# -----字典映射复杂的switch case---- # switch中,case下面可以写代码块,其实Python的字典也可以. print('请输入您想翻译星期几:') userinput = input("输入星期几(如星期一):") #输入 '星期一' #userinput = raw_input("输入星期几(如星期一):") # Python2.x def translateMonday(): return 'Monday' def translateTuesday(): return 'Tuesday' def translateWednesday(): return 'Wednesday' def translateThursday(): return 'Thursday' def translateFriday(): return 'Friday' def translateSaturday(): return 'Saturday' def translateSunday(): return 'Sunday' def unknow2(): return '请输入正确的信息' # 从这里可以得出,字典的value也可以是函数. # value的值,直接写函数名 # 这里的key是字符串,value是函数 chineseName = { '星期一': translateMonday, '星期二': translateTuesday, '星期三': translateWednesday, '星期四': translateThursday, '星期五': translateFriday, '星期六': translateSaturday, '星期日': translateSunday } # 注意这里的第二个参数也必须是一个函数,否则会报错的. # get()方法后面还有一个(), 是为了执行对应的函数 englishName = chineseName.get(userinput,unknow2)() print(englishName) # 输入信息: 星期一 # 输出结果: Monday # 扩展了字典中 key和value的知识点,value可以是函数,那么就可以用这样的方法来实现比较复杂的业务逻辑了. # 完美代替了switch case
另一个列表与字典的例子:统计词频
list1 = ['apple', 'orange', 'pear', 'apple', 'pear', 'apple', 'apple', 'banana'] # 将上方的列表元素,统计词频 # 创建空字典 items = {} for i in list1: if i in items: items[i] = items[i] + 1 else: items[i] = 1 print(items)
更多参考: https://www.cnblogs.com/jin-xin/articles/7562422.html