我有以下脚本。我要求用户提供类别,每个类别都可以按照用户给定的几种不同方式进行排序。 因此,输出应类似于:
{'a': ['b', 'c'], 'd': ['e', 'f']}
但它来了:
^{pr2}$我想这是因为我在每一类中都提到了相同的列表。我真的不知道如何使之动态化,而且事后清理清单似乎也不能得到正确的结果。在
有人能给我指出正确的方向吗? 提前谢谢
def user_settings():
settings = {}
sorteer = []
while True:
categorie = input('wat wordt de naam van de categorie: \n')
if categorie == 'q':
break
while True:
sorteren = input('waar wil je op sorteren: \n')
if sorteren == 'q':
break
sorteer.append(sorteren)
settings[categorie] = sorteer
print(settings)
tl;dr向下移动
sorteer = []
一行,这样它就在while循环中说明:
^{pr2}$sorteer = []
创建一个新列表。不幸的是,你只做了一次。这意味着你只有一张单子。不仅字典中的所有值都具有相同的元素,而且它们是完全相同的对象:sorteer.append(sorteren)
不创建列表的副本。因此,所有的键都映射到您拥有的唯一列表,即您在开始时创建的列表。在修复代码的最简单方法是在每次启动
while
的新循环时创建一个新列表。在在python中,列表是可变的,并且您使用排序器对settings dict中的键使用list。每次在list中进行更改(添加或删除元素),它都会反映出您使用同一列表时的每个键。详细了解请参考:Does Python have an immutable list?
您可以将程序更改为:
输出:
{'a': ['b', 'c'], 'd': ['e', 'f']}
相关问题 更多 >
编程相关推荐