• 解构


    解构

    我们刚刚提到了字典的 .items() 方法会返回键值对元组的键值对元组列表:

    dic = {'key': 1, 'dsb': 'alex'}
    print(dic.items())
    

    输出的内容为:

    dict_items([('key', 1), ('dsb', 'alex')])
    

    我们得到的是一个键值对列表,每个键值对以元组的形式存在。

    如果现在,我们需要提取其中的每个元素,可以这样操作:

    dic = {'key': 1, 'dsb': 'alex'}
    lst = list(dic.items())
    print(lst[0][0])
    print(lst[0][1])
    print(lst[1][0])
    print(lst[1][1])
    

    虽然能够实现,但是十分繁琐,这就需要用到结构的方法。

    结构的基本样式是这样的:

    a, b = (10, 20)
    print(a)
    print(b)
    

    可以看出,1020 的值分别被赋给了 ab。这种将等号右面的数据分别赋值给等号前面的变量的方法,就是解构。

    在看下面的例子:

    a, b = '你好'
    print(a)
    print(b)
    

    a 获取到了 b 获取到了 。也就是说,结构不仅适用于元组,也适用于字符串。事实上,只要是可迭代的对象,都可以用来解构:

    a,b,c = [10,20,30]
    print(a)
    print(b)
    print(c)
    
    a,b = {"key":1,"key2":2}
    print(a)
    print(b)
    

    需要注意的是,字典在进行迭代操作时,只会返回键,而不会返回值。

    结构时,等式左边的变量数要和右边的元素数目相等,否则就会报错。

    如果想要使用少数的变量来接收更多的元素,就需要使用 * 来将最后面的多个元素进行 聚合

    a, b, *c = (1, 2, 3, 4, 5, 6)
    print(a)
    print(b)
    print(c)
    

    输出的结果是:

    1
    2
    [3, 4, 5, 6]
    

    3456 被统一 打包 给了 c打包 后的数据以 列表 的形式储存。

    返回前面字典的 .items() 方法返回值的使用上,如果用结构的方法,我们可以很容易地打印出键值对的内容来:

    dic = {'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4}
    for k, v in dic.items():
        print(k, v)
    

    输出的内容为:

    key1 1
    key2 2
    key3 3
    key4 4
    
  • 相关阅读:
    <<信息学奥赛一本通>> 昆虫养殖 题解
    C++ primer 第七章 练习7.35 类作用域练习
    C++ primer 第六章 练习6.56 函数指针练习
    P1145 约瑟夫
    C++ 查看auto delctype 后变量的类型。(小技巧)
    Educational Codeforces Round 24 题解
    HDU 5279 分治NTT 图的计数
    BZOJ 3473
    BZOJ 3514 LCT+主席树
    看无可看 分治FFT+特征值方程
  • 原文地址:https://www.cnblogs.com/shuoliuchina/p/12430452.html
Copyright © 2020-2023  润新知