基于列表中的名称创建一个列表

4

我有一个如下所示的列表1

list1 = ['mike', 'sam', 'paul', 'pam', 'lion']

我可以逐个指定以下格式的列表名称。

for item in list1:
     for item in line:
          mikelist = []
          mikelist.append()

for item in list1:
     for item in line:
          samlist = []
          samlist.append()

for item in list1:
     for item in line:
          paullist = []
          paullist.append()

而不是在列表中指定名称来创建新列表并追加,我该如何从list1中取出项目,并自动在循环行中为list1中的所有项目创建列表?
 for item in line:
      namefromthelist = []
      namefromthelist.append()

4
你为什么不使用字典呢? - accdias
3个回答

4
创建一个字典,以名称为键,值为列表:
dict = {}
list1 = ['mike', 'sam', 'paul', 'pam', 'lion']

for i in list1:
    dict[i] = []
print(dict)

输出:

{'mike': [], 'lion': [], 'paul': [], 'sam': [], 'pam': []}

你可以像这样使用它:
dict['mike'].append('blah')
print(dict['mike'])

0

这更像是一个字典的工作。类似这样的代码可以解决问题:

names = ['mike', 'sam', 'paul', 'pam', 'lion']
persons = dict(zip(names, [[]] * len(names)))

这将产生以下结果:

>>> persons
{'mike': [], 'sam': [], 'paul': [], 'pam': [], 'lion': []}
>>>

现在你可以用类似这样的方式填充每个列表:
fruits = ['banana', 'orange', 'apple']
for person in persons:
    persons[person].append(fruits)

0

强烈不建议使用这种方法,你应该使用字典。然而,如果你坚持走这条路,这就是你可以实现你想要的结果的方法。

for name in list1:
    globals()['{}list'.format(name)] = [name]

print(mikelist)
# ['mike']

print(pam)
# ['pamlist']

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