如何创建与字典键同名的列表?

时间:2012-07-20 23:52:14

标签: python list dictionary key

我有一个包含数百个条目的字典,格式为:

>>>dict
{'1620': 'aaaaaa'}

我想制作名为'1620'等的新空列表。我尝试过以下各种变体,但它不会将每个键识别为创建列表时要使用的变量。相反,它将列表命名为“eachkey”,我的密钥(在此示例中为“1620”)未连接到新列表。

>>>for eachkey in dict.keys():
>>>    eachkey=[]
>>>
>>>eachkey
[]
>>>'1620'
1620

编辑添加: 也许我可以在制作字典的同时制作列表?把它放在下面? str(eachfile [-4:])就是我想要的列表名称。

files=open(sys.argv[1])
dict={}
for eachfile in files:
    value=open(eachfile)
    key=str(eachfile[-4:])
    dict[key]=value
eachfile.close()

编辑:如果这是他们需要的话,我可以在数字上添加字母。

2 个答案:

答案 0 :(得分:2)

我认为不可能更改整数文字1620,以便它为您提供除整数1620以外的对象。同样,我认为您不能更改字符串文字'1620'给你一个列表而不是字符串。

如果您在变量名前加上一些字母以使其成为有效名称,则可以这样做。例如,您可以使用my1620代替1620。我不建议这样做,但有可能:

>>> d = {'1620': 'aaaaaa'}
>>> for k,v in d.items():
...     locals()['my'+k] = []
>>> my1620
'aaaaaa'

答案 1 :(得分:0)

这样的字典:

d1 = {'foo':'bar', '1621':'hello'}

尝试这样做:

d2 = dict((k,list()) for k in d1.keys())

现在d2是:

{'1621': [], 'foo': []}

您可以参考您的列表清单:

d2['1621'].append(20)
d2['foo'].append(5)
d2['foo'].append('zig')

这使得d2:

{'1621': [20], 'foo': [5, 'zig']}

正如加雷斯所说,你真的很想做你要做的事。这可能更好。