2016-12-14 60 views
-1

我有一個列表以不同語言的Json格式存在,我希望在進一步將特定語言保存到不同的列表之前用它們的標籤標識它們。如何訪問Python中的字符串列表中的列表

假設我有.NET和Web標籤用JSON格式即

>>> json_words = """ 
...  [ 
...  {".Net": [ 
...  ["ASP .NET", 3], 
...  ["Angular JS", 1] 
...  ]}, 
...  {"Web": [ 
...  ["Database", 3], 
...  ["jQuery", 3] 
...  ] } 
...  ] 
... """ 

注意括號的結束,以及用他們的基本語言和工具一起。在這個例子中,列表中的第一個字符串(在我的例子中是.net和web)被認爲是標籤,其餘的是它的語言。現在

,我做了一件這樣的檢查是什麼返回:

>>> import json 

>>> important_words = json.loads(json_words) 
>>> important_words = [str(s) for s in important_words] 
>>> important_words = [item.lower() for item in important_words] 

>>> print important_words[0] 
[u'[.net]', [u'asp .net', 3], [u'angular js', 1]] 

但我不能單獨訪問標籤..

>>> print important_words[0][1] 
u 

如何訪問只是標籤,然後它的進一步名單。我也試圖讓它成爲一個數組,但它根本沒有幫助。

values = np.array(important_words) 

它實際上列表的方括號這是困擾我最...難道我正確地作出這個JSON名單?

任何形式的幫助將不勝感激...

+0

你確定這是代碼你在跑?在寫入時,嘗試創建'important_words'時會失敗。你在列表中調用'lower()'(它沒有'lower'方法)。 – Holloway

+0

哦,不,這不是真正的代碼......我只是舉了一個例子,這就是我的想法......真正的代碼是相當巨大的,所以我不能發佈一切。 – Falcon

+0

@Falcon你需要創建一個小例子。瞭解如何創建[mcve]。 –

回答

0

如果我理解你想要做什麼,我想將其轉換爲一個字典(orderedDict如果你想保持順序)。您還可以從列表中篩選出數字,以便爲您留下語言列表。

>>> frameworks = {framework[0]: [language[0] for language in framework[1:]] for framework in _list} 
>>> frameworks.keys() 
['[.Net]', '[Web]'] 
>>> frameworks['[.Net]'] 
['ASP .NET', 'MVC Framework', 'Angular JS', 'AJAX'] 
>>> frameworks['[Web]'] 
['Database', 'jQuery', 'Javascript', 'SQL Server', 'Bootstrap', 'Html', 'CSS'] 
+0

感謝您的幫助,但這不會工作,因爲這只是一個示例示例真正的_list有更多的標籤在他們和你的第二個輸出即框架['[.Net]']你實際上黑客的代碼是不正確的,我只想訪問列表中的語言而不是數字,最後是否運行此代碼?它不適合我。 – Falcon

+0

我確實運行過代碼。你使用什麼python版本?它給了什麼錯誤? – Holloway

+0

我直接以'[.Net]'爲例。如果你不想要數字,你也可以刪除它們。我會編輯我的答案。 – Holloway

0

要轉換的整體list成一個字符串:

>>> [str(s) for s in important_words] 

important_words是列表的list,例如第一s將是:

>>> important_words[0] 
[u'[.Net]', [u'ASP .NET', 3], [u'Angular JS', 1]] 

當你調用str(s)你得到整個列表的字符串表示:

>>> str(important_words[0]) 
u"[u'[.Net]', [u'ASP .NET', 3], [u'Angular JS', 1]]" 
0

如果您對基礎分割你的清單「:」那麼你就可以訪問你的json_words。

>>> json_words = [str(s) for s in json_words] 
    >>> json_words = [item.lower() for item in json_words] 
    >>> tag_list = {} 
    >>> for i in range(0, len(json_words)): 
    ...  tag_list[i] = (json_words)[i].split(':')[0] #This will gives you list of first strings 
    >>> print tag_list 
    {0: "{'.net'", 1: "{'web'"} 
    >>> print tag_list.values() 
    ["{'.net'", "{'web'"] 

以及訪問進一步列表拆分它逗號的基礎是這樣的:

>>> dotnet_list = (json_words)[i].split(':')[1].split(',') 
    ["'asp .net'", "'angular js'"] 

這是一個較長的方法,但一個簡單的一個(我認爲)

相關問題