python字典键值交换_巴蒂的python学习日记_7

本文介绍了Python中的元组打包和拆包概念,如何在元组和变量间进行转换,并展示了在函数返回值和赋值语句中的应用。通过元组分配,可以方便地交换变量值和处理函数返回的多个值。此外,还探讨了在遍历字典和处理函数返回的多个结果时,元组拆包的实用性。
摘要由CSDN通过智能技术生成

Tuple Packing and Unpacking

  • 元祖是一种序列的类型,除了不可变之外,和列表很相似。当使用多个值和变量的时候,Python会自动在元祖之间进行打包和拆包,简化了程序。python在所用需要用到多个单值的时候都可以用多个逗号表达式来分隔,这样会自动打包成元祖。
julia = ("Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia")
# or equivalently
julia = "Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia"
print(julia[4])

得到结果:

2009

如果想要得到输出Atlanta,georgia也可以写:print(Julia[-1])[-1]会选择序列中的最后一项。

  • 函数可以返回元祖作为返回值。比如,我们可以创建函数返回圆的周长和半径
def circleInfo(r):
    """ Return (circumference, area) of a circle of radius r """
    c = 2 * 3.14159 * r
    a = 3.14159 * r * r
    return (c, a)

print(circleInfo(10))
  • Python具有非常强大的元组分配功能,这个功能允许从赋值语句右侧的元组为赋值语句左侧的变量名元组分配值。 另一种思考方式是将值的元组拆包到变量名中。
julia = "Julia", "Roberts", 1967, "Duplicity", 2009, "Actress", "Atlanta, Georgia"

name, surname, birth_year, movie, movie_year, profession, birth_place = julia

这等效于七个赋值语句,所有这些都在同一行上。 但是有一个要求是,左边变量的数量必须与元组中元素的数量匹配。

有时,交换两个变量的值很有用。 对于传统的赋值语句,我们必须使用一个临时变量。 例如,交换a和b:

a = 1
b = 2
(a, b) = (b, a)
print(a, b)

左边是变量的元组; 右侧是值的元组。 每个值都分配给其各自的变量。 右边的所有表达式都在任何赋值之前求值。 此功能使元组分配相当灵活。

当然,左边的变量数和右边的值数必须相同。

def circleInfo(r):
    """ Return (circumference, area) of a circle of radius r """
    c = 2 * 3.14159 * r
    a = 3.14159 * r * r
    return c, a

print(circleInfo(10))

circumference, area = circleInfo(10)
print(circumference)
print(area)

circumference_two, area_two = circleInfo(45)
print(circumference_two)
print(area_two)

这样可以将函数值集中命名给参数。

  • Unpacking Into Iterator Variables

遍历元组或列表的列表时,带拆包的多重分配特别有用。

例如,字典由键值对组成。 当您在字典上调用items()方法时,您会得到一系列键值对。 这些对中的每对都是一个两个项的元组。

d = {"k1": 3, "k2": 7, "k3": "some other value"}

for p in d.items():
    print("key: {}, value: {}".format(p[0], p[1]))

36faa30cf542c2ac693849a7202dc519.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值