如何通过一些修改来重建元组?

时间:2013-01-18 07:48:11

标签: python python-3.x

例如,我有一个元组

a = ('chicken', 1, 'lemon', 'watermelon', 'camel')

我想从b构建一个新的元组a但是稍微改变一下

d = {0: 'apple', 1: 'banana', 2: 'lemon', 3: 'watermelon'}

b = (a[0], d[a[1]], a[2], a[3], a[4])

另一种方法

b = list(a)
b[1] = d[b[1]]
b = tuple(b)

所有这些都有效,但看起来很傻。

还有另一种优雅的方式来完成这项工作吗?或者是否有一些修改原始元组的技能?

2 个答案:

答案 0 :(得分:4)

与你的相比,这有点效率低,因为它会检查每个项目,但一般的想法是它会查看a中的每个项目,检查{{1}中的匹配键如果找到一个,则返回该键的值。如果未找到任何密钥,则返回原始项目:

d

答案 1 :(得分:1)

我不知道你所说的“优雅”是什么意思,但是如果你想要一些更通用的东西来替换“a”元组中具有“d”键的元素,你可以使用{{3}并做类似的事情:

>>> a
('chicken', 1, 'lemon', 'watermelon', 'camel')
>>> d
{0: 'apple', 1: 'banana', 2: 'lemon', 3: 'watermelon'}
>>> tuple(d[x] if x in d else x for x in a)
('chicken', 'banana', 'lemon', 'watermelon', 'camel')

它构造了一个新的元组,因为元组是不可变的。