根据列表中的名称创建列表

时间:2019-04-02 22:58:55

标签: python

我有一个类似于以下的列表

func deleteAction(at indexPath : IndexPath) -> UIContextualAction {
    let action = UIContextualAction(style: .destructive, title: "Delete") { (action, view, completion) in
        let vinyl = self.vinyls[indexPath.row]
        guard let userID = Auth.auth().currentUser?.uid else { fatalError() }

        Database.database().reference().child("vinyls").child(userID).removeValue(completionBlock: { (error, _) in
            <#code#>
        })


    }
}

我可以一个一个地指定列表名称,如下所示。

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

等等。不是在列表中指定名称以创建新列表并追加,而是如何从list1中获取项目并在此处为列表1中的所有项目的for循环行中自动创建列表?

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()

4 个答案:

答案 0 :(得分:2)

创建一个字典,名称作为键,列表作为值:

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'])

答案 1 :(得分: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)

答案 2 :(得分:0)

dictionary对于此问题似乎很有帮助。字典具有键值对,其中可以是列表的每个名称,而 values 可以是每个名称的列表。

例如:

dict = {}
list1 = ['mike', 'sam', 'paul', 'pam', 'lion']

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

输出:

  

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

答案 3 :(得分:0)

高度 高度不建议使用此方法,而应使用字典。但是,如果您坚持走这条路,这将是您达到预期效果的方式。

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

print(mikelist)
# ['mike']

print(pam)
# ['pamlist']