目前,我有一个嵌套元组:
t = (('b', 2), ('a', 1), ('c', 3))
我希望传入两个参数key
和value
,如果它们不在嵌套的元组中,那么像这样将其添加到元组(key, value)
,并返回新的元组。你知道吗
如果键在元组中,它将简单地替换它。你知道吗
例如:
使用嵌套元组t
我想传入key = d
和value = 4
。因为,元组不在嵌套元组中,所以它将被添加到嵌套元组中。你知道吗
预期的输出是:(('b', 2), ('a', 1), ('c', 3), ('d', 4))
如果这个元组已经在嵌套的元组中,它将被替换。例如,如果我传入key = c
和value = 9
到嵌套元组t
预期的输出是:(('b', 2), ('a', 1), ('c', 9))
到目前为止我所拥有的…
def add_new(t, key, value)
if len(t) == 0:
return (key, value)
if key not in t[0][0] and value not in t[0][1]:
return (key, value,) + add_new(t[0:], key, value)
if key in t[0][0] and value in t[0][1]:
return (key, value,) + add_new(t[1:], key, value)
add_new(t, "d", 4)
add_new(t, "c", 9)
我想你最好用dict,而不是元组。你知道吗
然后,当您想添加另一个变量时,您可以使用
此外,如果要替换已经存在的值,则使用
这有几个好处。字典在添加、替换和删除值方面通常比元组或列表等索引数据结构快得多。它们也非常直观,不需要您定义任何自己的函数或方法来使用它们。有关python字典的更多信息,请参见here。你知道吗
可以使用生成器表达式创建一个仅包含所需值的新元组,然后添加新元组:
注意
((key, value),)
中的多余逗号。否则,它将是单个元组而不是嵌套元组。你知道吗如果必须使用递归,那么可以将基本情况选择为空元组或第一个元素的键与
key
匹配的元组。在本例中,您将向最终结果追加一个更新的键。否则,通过保持第一个元素的原样并递归调用其余元素的add_new
返回。你知道吗这将产生以下功能:
输出
相关问题 更多 >
编程相关推荐