0

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

>>>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()

编辑:如果需要的话,我可以在数字旁边添加字母。

4

2 回答 2

2

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

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

>>> d = {'1620': 'aaaaaa'}
>>> for k,v in d.items():
...     locals()['my'+k] = []
>>> my1620
'aaaaaa'
于 2012-07-20T23:54:03.630 回答
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']}

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

于 2012-07-21T17:32:38.137 回答