从一个字符串和一个字符串列表创建一个元组。

19
我需要将一个字符串与一个字符串列表组合成元组,以便将其用作字典键。这将在内循环中进行,因此速度很重要。
该列表将很小(通常为1,但偶尔为2或3个项)。
最快的方法是什么?
之前:
my_string == "foo"
my_list == ["bar", "baz", "qux", "etc"]

之后:

my_tuple == ("foo", "bar", "baz", "qux", "etc")

(注意:my_list本身不得被更改)。


1
你是用元组的 元素 还是整个元组作为字典的键? - N 1.1
如果列表很小,为什么速度如此重要? - N 1.1
用于创建键的列表将很小。字典本身将相当大。 - kes
回答你的第一个问题,整个元组将作为字典的键。 - kes
3个回答

21

我无法保证性能,但是这绝对是我能想到的最简单的方法:

my_tuple = tuple([my_string] + my_list)

15
my_tuple = (my_string,) + tuple(my_list)这段代码大约快了15%。 - saeedgnu
@ilius:不错。我明白了,因为你只在过程中创建元组,跳过了列表部分。 - BoltClock

1

最直接的方法就是使用 my_tuple = tuple( my_list + [my_string] )。我肯定会从这个开始,看看性能是否可接受,然后再尝试找出任何疯狂的方式来突破正常系统的速度限制。


正如问题所述,my_string 必须是 my_tuple 的第一个元素而不是最后一个。 - saeedgnu
好的,那么就像BoltClock的解决方案一样将它们反转即可。 - dfan

-3

我认为这种方式更好:

my_list = my_list.insert(0,my_string)
my_tuple = tuple(my_list)

2
这会修改 my_list,而 OP 不想要这样。并且 list.insert() 不会返回列表,所以你不能直接将其传递给 tuple() 转换函数。 - BoltClock
OPУ»┤my_listСИЇт║ћУ»ЦУбФТћ╣тЈўсђѓ - N 1.1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接