2012-07-20 26 views
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

請認真考慮你是否真的想要這樣做。 (換言之,我有99.9%的人相信這是一個糟糕的主意,即使考慮到你想這樣做,但我不知道你的理由。) – 2012-07-21 00:09:21

+1

另外,不要命名你的字典'dict',否則你會在路上遇到一些令人討厭的驚喜。 – 2012-07-21 15:56:59

+1

@GarethMcCaughan是正確的。也許你可以解釋爲什麼你這樣做,所以我們可以提出一個更好的方法來實現你的目標? – 2012-07-21 16:21:01

回答

2

我不認爲這是可能改變整數文字1620所以,它給你比整數1620以外的對象同樣地,我不認爲你可以改變字符串字面'1620'給你一個列表,而不是一個字符串。

你可以這樣做,如果你在變量名前添加一些字母來使它們成爲有效的名字。例如,您可以使用my1620而不是1620。我不會建議這樣做,但它是可能的:

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

我不希望列表包含該值。我希望它是空的,以便稍後可以將其他數據放入其中。 – user1539097 2012-07-21 00:06:18

+0

@ user1539097:嗯...所以分配一個空列表呢? – 2012-07-21 00:07:52

+0

>>> for k in dict.items(): ... locals()[「my」+ k] = [] ... 回溯(最近通話最後一個): 文件「」,2號線,在 類型錯誤:不能連接「海峽」和「元組」對象 – user1539097 2012-07-21 00:18:05

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']} 

正如加雷思說,這不太可能,你真正想做的事情你問做什麼。這可能會更好。

相關問題