我在python中编写程序,我正在使用字典。我需要为字典中的每个键创建一个空列表,每个列表都需要与键名称相同。密钥是用户输入的,这就是为什么我不能以传统方式制作列表。 这是我尝试的第一件事
a = {"x":1, "y":2, "z"3}
list(a.keys())
a.pop() = [] # This raises an error
我还尝试在创建字典时创建列表,但这也不起作用:
a = {}
b = input("INPUT1")
c = input("INPUT2")
a[b] = c
b = []
这创建了一个名为“b”的列表,而不是用户输入的内容。请帮忙!!
答案 0 :(得分:3)
这真的没有多大意义。为什么你的名单需要'名字'?就此而言,“名字”是什么意思?
其次,您的代码没有做任何事情。 a.keys()
已经是一个列表。在其上调用list
不会执行任何其他操作。但无论如何,无论该行的结果如何,它都会被立即丢弃,因为您不会将结果存储在任何地方。
pop
不适用于词典,它适用于列表。将pop
的结果设置为列表意味着什么?您是否尝试使用字典中每个键的名称动态创建一组局部变量?如果是这样,为什么?为什么不简单地用第一个键创建另一个字典,每个值作为新列表?这可以在一个命令中完成:
b = dict((k, []) for k in b.keys())
(注意dict.fromkeys()在这里不起作用,因为这会导致每个元素共享相同的列表。)
答案 1 :(得分:1)
请改用raw_input
。 input
需要一个有效的Python表达式,并且会评估用户输入的内容。因此,如果用户输入一个单词,它将评估该单词并尝试查找具有其名称的对象。
编辑:为了进一步澄清,input("INPUT1")
相当于执行eval(raw_input("INPUT1"))
。