如何在Python中访问字符串列表中的列表

时间:2016-12-14 11:38:45

标签: python json list numpy

我有一个以Json格式呈现的列表,它有不同的语言,我想用它们的标签识别它们,然后再将这些特定语言保存到不同的列表中。

假设我有一个.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

如何只访问标签,然后再访问其进一步列表。我也尝试使它成为一个numpy阵列,但它根本没有帮助。

values = np.array(important_words)

它实际上是列表的方括号,它最让我烦恼...我是否正确地制作了这个json列表?

任何形式的帮助都将受到赞赏......

3 个答案:

答案 0 :(得分: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']

答案 1 :(得分:0)

您正在将整个list转换为字符串:

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

important_wordslist个列表,例如第一个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]]"

答案 2 :(得分: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'"]

这是一个较长的方法,但更简单的方法(我认为)