Python中列表的神秘命名

时间:2011-05-23 08:58:00

标签: python

我在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”的列表,而不是用户输入的内容。请帮忙!!

2 个答案:

答案 0 :(得分:3)

这真的没有多大意义。为什么你的名单需要'名字'?就此而言,“名字”是什么意思?

其次,您的代码没有做任何事情。 a.keys()已经是一个列表。在其上调用list不会执行任何其他操作。但无论如何,无论该行的结果如何,它都会被立即丢弃,因为您不会将结果存储在任何地方。

pop不适用于词典,它适用于列表。将pop的结果设置为列表意味着什么?您是否尝试使用字典中每个键的名称动态创建一组局部变量?如果是这样,为什么?为什么不简单地用第一个键创建另一个字典,每个值作为新列表?这可以在一个命令中完成:

b = dict((k, []) for k in b.keys())

(注意dict.fromkeys()在这里不起作用,因为这会导致每个元素共享相同的列表。)

答案 1 :(得分:1)

请改用raw_inputinput需要一个有效的Python表达式,并且会评估用户输入的内容。因此,如果用户输入一个单词,它将评估该单词并尝试查找具有其名称的对象。

编辑:为了进一步澄清,input("INPUT1")相当于执行eval(raw_input("INPUT1"))