zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    重新想象 Windows 8 Store Apps (15) 控件 UI: 字体继承, Style, ControlTemplate, SystemResource, VisualState, VisualStateManager
    重新想象 Windows 8 Store Apps (12) 控件之 GridView 特性: 拖动项, 项尺寸可变, 分组显示
    返璞归真 asp.net mvc (10) asp.net mvc 4.0 新特性之 Web API
    与众不同 windows phone (29) Communication(通信)之与 OData 服务通信
    与众不同 windows phone (33) Communication(通信)之源特定组播 SSM(Source Specific Multicast)
    与众不同 windows phone (27) Feature(特性)之搜索的可扩展性, 程序的生命周期和页面的生命周期, 页面导航, 系统状态栏
    与众不同 windows phone (30) Communication(通信)之基于 Socket TCP 开发一个多人聊天室
    返璞归真 asp.net mvc (12) asp.net mvc 4.0 新特性之移动特性
    重新想象 Windows 8 Store Apps (2) 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch
    重新想象 Windows 8 Store Apps (10) 控件之 ScrollViewer 特性: Chaining, Rail, Inertia, Snap, Zoom
  • 原文地址:https://www.cnblogs.com/frx9527/p/python_07.html
Copyright © 2011-2022 走看看