2015-05-30 194 views
-1

我有一個列表與兩個項目,每個項目是一個字典。現在我想打印這個項目,但是因爲這些都是字符串,所以python寫的是字典而不是名字。任何建議?打印列表項目 - python

sep_st = {0.0: [1.0, 'LBRG'], 0.26: [31.0, 'STIG']}  
sep_dy = {0.61: [29.0, 'STIG'], 0.09: [25.0, 'STIG']} 
sep = [sep_st, sep_dy] 
for item in sep: 
    for values in sorted(item.keys()): 
    p.write (str(item)) # here is where I want to write just the name of list element into a file 
    p.write (str(values)) 
    p.write (str(item[values]) +'\n') 
+2

您可以添加預期的輸出嗎? –

+1

'字典'沒有名字。這是對變量如何工作的誤解。你可以在'dict'裏面放一個'name'鍵,如果這是你需要的,就查找它。 – khelwood

+0

@BhargavRao:而不是「sep_st」它寫入整個字典,而不只是名稱 – Fatemeh

回答

2

我的建議是,你使用字典而不是列表。這樣,你可以使字典的名稱作爲字符串鍵爲他們:

sep_st = {0.0: [1.0, 'LBRG'], 0.26: [31.0, 'STIG']}  
sep_dy = {0.61: [29.0, 'STIG'], 0.09: [25.0, 'STIG']} 
sep = {"sep_st": sep_st, "sep_dy": sep_dy} # dict instead of list 
for item in sep: 
    for values in sorted(sep[item].keys()): 
    p.write (str(item)) 
    p.write (str(values)) 
    p.write (str(sep[item][values]) +'\n') 

正如你可以this other question看到,這是不可能的訪問實例名,除非你子類字典,並通過一個名稱自定義的構造函數類,以便您的自定義詞典實例可以擁有一個您可以訪問的名稱。

因此,在這種情況下,我建議您使用帶有名稱鍵的字典來存儲您的字典,而不是列表。

1

由於sepvariables存儲dictionaries一個列表中,當您嘗試打印sep您將打印dictionaries

如果你真的需要打印每variable爲做一個string,一種方式是這也創造了其他listvariable名稱作爲字符串:

sep_st = {0.0: [1.0, 'LBRG'], 0.26: [31.0, 'STIG']}  
sep_dy = {0.61: [29.0, 'STIG'], 0.09: [25.0, 'STIG']} 
sep = [sep_st, sep_dy] 
sep_name = ['sep_st', 'sep_dy'] 
for i in sep_name: 
    print i 

然後,你可以做剩下的代碼。