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

 

posted @ 2018-04-21 09:35  枫若雪  阅读(156)  评论(0编辑  收藏  举报