例如,我有一个元组
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)
所有这些都有效,但看起来很傻。
还有另一种优雅的方式来完成这项工作吗?或者是否有一些修改原始元组的技能?
答案 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')
它构造了一个新的元组,因为元组是不可变的。