【问题标题】:Create a tuple from a string and a list of strings从一个字符串和一个字符串列表创建一个元组
【发布时间】:2011-07-24 03:55:01
【问题描述】:

我需要将一个字符串和一个字符串列表组合成一个元组,这样我就可以将它用作字典键。这将处于内部循环中,因此速度很重要。

列表会很小(通常是 1 个,但偶尔会有 2 或 3 个项目)。

最快的方法是什么?

之前:

my_string == "foo"
my_list == ["bar", "baz", "qux", "etc"]

之后:

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

(注意:my_list 不得自行更改)。

【问题讨论】:

  • 你是使用 元素的 还是整个元组作为 dic 键?
  • 如果列表很小,为什么速度如此重要?
  • 用于创建密钥的列表会很小。字典本身会很大。
  • 回答你的第一个问题,整个元组将是字典键。

标签: python string list tuples


【解决方案1】:

我不能说性能,但这绝对是我能想到的最简单的:

my_tuple = tuple([my_string] + my_list)

【讨论】:

  • my_tuple = (my_string,) + tuple(my_list) 更快一些(大约 %15)。
  • @ilius:整洁。我明白为什么,因为你只在这个过程中制作元组,跳过列表位。
【解决方案2】:

直接的方法就是my_tuple = tuple( my_list + [my_string] )。在尝试找出任何颠覆正常系统以提高速度的疯狂方法之前,我当然会从这个开始,看看性能是否可以接受。

【讨论】:

  • 作为问题,my_string 必须是my_tuple 的第一个元素,而不是最后一个。
  • 啊哈,然后像 BoltClock 的解决方案一样反转它们。
【解决方案3】:

我认为这种方式更好:

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

【讨论】:

  • 这会修改 OP 不想要的 my_list。而list.insert() 不会返回列表,因此您不能将其传递给tuple() 演员表。
  • OP 说 my_list 不应更改。
猜你喜欢
  • 1970-01-01
  • 2013-08-11
  • 2017-02-13
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多