使变量成为列表的名称?python

使变量成为列表的名称?python,python,list,variables,Python,List,Variables,我希望放入这个函数的每个变量都成为它自己列表的名称 def listy(x, insert): listend = isinstance(x, list) if listend: x.append(insert) else: x = [] x.append(insert) print(x) listy("xyz", "neutral") listy("xyz&quo

我希望放入这个函数的每个变量都成为它自己列表的名称

def listy(x, insert):
    listend = isinstance(x, list)
    if listend:
        x.append(insert)
    else:
        x = []
        x.append(insert)
    print(x)

listy("xyz", "neutral")
listy("xyz", "happy")

但是,当我这样做时,它会覆盖上一个列表(最后列表的标题是“happy”,而不是“neutral”,“happy”)。如果该单词已经是列表的名称,我如何将其添加到列表中?

对于您给出的示例,这是有效的。它使用字典

def listy(x, insert):
    varName[x].append(insert)
    return varName
varName = {"xyz":[]}
x = listy("xyz", "neutral")
y=listy("xyz", "happy")
print(y)

它将覆盖上一个列表

上一个列表不会被覆盖。在函数
listy
中创建的列表由垃圾收集器自动销毁。您只需在第二个函数调用
listy(“xyz”,“happy”)
中创建一个新的临时列表,它将再次被解除启动。您需要在全局上下文中放置
x

您可以通过以下方式重写函数:

def listy(x, insert):
    listend = isinstance(x, list)
    if listend:
        x.append(insert)
    else:
        x = []
        x.append(insert)
    print(x)
    return x

x = listy("xyz", "neutral")
x = listy(x, "happy")

您似乎对引用和对象感到困惑。在python中,一切都是对象。像
x
这样的名称只是对对象的引用。第二次函数调用中的
x
无法引用第一次函数调用中创建和销毁的
[“中立”]

isinstance没有将其转换为列表。它返回一个布尔值。然后创建名为x的列表,因为它返回False,然后追加insert。是否要在全局上下文中创建变量
xyz
?字典。这就是字典的用途。@Buddybobii很有意义。我试图反转if/else,但是现在我得到了一个没有列表的str的AttributeError