2016-07-21 65 views
0

我有一本字典,其中的關鍵是數字,值是一個或多個列表。我想閱讀這本詞典,以便我可以分開鍵和值。如何以不同的方式閱讀字典?

Dictionary-

{ 
1468332424064000: '[80000,2]', 
1468332423282000: '[30000,6]', 
1468332421081000: '[40000,2]', 
1468332424121000: '[30000,2][40000,2]', 
1468332424014000: '[60000,2]', 
1468332421131000: '[40000,2][30000,6]', 
1468332422921000: '[60000,2]', 
1468332421046000: '[40000,2]', 
1468332422217000: '[40000,2]', 
1468332424921000: '[40000,2]', 
1468332421459000: '[30000,6]', 
1468332422579000: '[60000,2][30000,6]', 
1468332422779000: '[30000,2]', 
1468332424161000: '[70000,6]' 
} 

程序 - 代碼 -

for k,v in latency_obj.d.iteritems(): 
    li = v.split() 
    for l in li: 
     print l 

輸出 -

[80000,2] 
[30000,6] 
[40000,2] 
[30000,2][40000,2] 
[60000,2] 
[40000,2][30000,6] 
[60000,2] 
[40000,2] 
[40000,2] 
[40000,2] 
[30000,6] 
[60000,2][30000,6] 
[30000,2] 
[70000,6] 

但我想這兩個列表作爲單獨的列表,以便我可以檢索該列表的值。任何想法我錯過了什麼?

+6

什麼兩個列表? –

+0

你想''[60000,2] [30000,6]'是'[[60000,2],[30000,6]]'? –

+0

@Ignacio Vazquez-Abrams-分開我可以訪問該列表的值。 – kit

回答

0

假設你指望你的結果看起來像

[80000,2] 
[30000,2] 
[40000,2] 
[60000,2] 
[30000,6] 
[40000,2] 
[30000,6] 
[30000,2] 
[40000,2] 
[40000,2] 
[70000,6] 
[60000,2] 
[30000,6] 
[60000,2] 
[40000,2] 
[40000,2] 
[30000,6] 

我建議拆分的每個值上[,就像這樣:

for k, v in d.iteritems(): 
    li = v.split('[') 
    for l in li: 
     if l: 
      print '[' + l 
0

試試這個,

for key,value in d.items(): 
    d[key] = eval(value.replace(']','],',1)) 

輸出

{1468332421046000: ([40000, 2],), 
1468332421081000: ([40000, 2],), 
1468332421131000: ([40000, 2], [30000, 6]), 
1468332421459000: ([30000, 6],), 
1468332422217000: ([40000, 2],), 
1468332422579000: ([60000, 2], [30000, 6]), 
1468332422779000: ([30000, 2],), 
1468332422921000: ([60000, 2],), 
1468332423282000: ([30000, 6],), 
1468332424014000: ([60000, 2],), 
1468332424064000: ([80000, 2],), 
1468332424121000: ([30000, 2], [40000, 2]), 
1468332424161000: ([70000, 6],), 
1468332424921000: ([40000, 2],)} 

因此,您可以將字符串更改爲元組,並且可以訪問所有值。

您可以像這樣訪問這些值。

In [1]: d[1468332421131000] 
Out[1]: ([40000, 2], [30000, 6]) 
In [2]: d[1468332421131000][0] 
Out[2]: [40000, 2] 
In [3]: d[1468332421131000][1] 
Out[3]: [30000, 6] 
In [4]: d[1468332421131000][0][1] 
Out[4]: 2 

理念:

replace(']','],',1)],取代]第一次出現,只是與eval評估。並存儲相同的字典本身。

+0

如何遍歷該輸出字典,以便我可以獲取該字典的每個值。即列表的值也類似於40000和2. – kit

+0

@kit'[j for i in d。在i中,j的值()用於製作一個簡單的列表。並遍歷它。 –

0

考慮到'列表'即在這裏以字符串形式討論的字典值,可以使用正則表達式提取數字。

>>> import re 
>>> lists = '[30000,2][40000,2]' 
>>> out_list = re.findall('\d+',lists) 
['30000', '2', '40000', '2'] # The elements are actually strings 
>>> [eval(n) for n in out_list] 
[30000, 2, 40000, 2] # List containing numbers 

希望這是你所期待的。