【问题标题】:What is the best way to create lists dynamically in Python? [duplicate]在 Python 中动态创建列表的最佳方法是什么? [复制]
【发布时间】:2021-06-03 12:39:35
【问题描述】:

我的用户将创建任意数量的 Human 对象,并将它们分组到任意数量的组中。 (将跟踪创建的组数)我想为他们创建的每个组创建一个列表以供以后使用。如果我不知道会有多少组,如何为每个组创建一个列表?

我想到了类似的东西:

for i in range(num_groups):
    eval('group_' + str(i) + ' = []')

这应该为名为 group_i 的组 i 创建一个空列表。我读过 eval 不是在大多数情况下应该使用的东西,所以我想知道是否有更好的方法。

【问题讨论】:

  • 你知道列表是一回事吗?
  • 我确实是。不过我不确定这会有什么帮助。

标签: python dynamic


【解决方案1】:

你有没有想过

groups = [[] for i in range(num_groups)]

而不是

for i in range(num_groups):
    eval('group_' + str(i) + ' = []')

这样你就声明了num_groups 列表。

【讨论】:

  • 我不知道如何访问每个列表,根据它的编号。
  • @JerAnsel 通过调用 groups[i] 其中i 是它的号码。
  • 我试过了,收到一个错误:生成器对象不可下标。不过,接受的答案对我有用,无论如何谢谢!
  • @JerAnsel 是的,倒霉 :) 我已经修复了代码,以防万一有人使用它。
【解决方案2】:

您可以使用列表字典,以便“group_i”形式的每个名称都将在该字典中保存一个新列表(“group_i”是键)。如果要获取所有列表,只需拥有所有键并找到相应的值即可到达特定列表。

声明如下

all_groups = {}
for i in range(num_groups):
    new_group_name = "group_" + str(i)
    all_groups[new_group_name] = []

为了将项目添加到特定组

all_groups[group_name].append(item)

您可以通过访问字典的所有键来访问所有组名

all_groups.keys()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2013-01-12
    相关资源
    最近更新 更多