【问题标题】:Contain Output in a List在列表中包含输出
【发布时间】:2017-03-14 23:34:00
【问题描述】:

对于我下面的代码,一切正常,但是我试图将我的输出存储在一个列表中,但我不知道该怎么做。我尝试创建一个空列表并将输出附加到该列表,但它不起作用。任何帮助都会很棒!

sample_photo_rep["photo"]["tags"]["tag"]
for sample_tags_list in sample_photo_rep["photo"]["tags"]["tag"]:
    print [sample_tags_list['raw'].decode('utf-8')]

current output: 
[u'Nature']
[u'Mist']
[u'Mountain']

correct output: [u'nature', u'mist', u'mountain']

【问题讨论】:

  • 你是如何创建空列表并追加的,因为我在回答中所做的并且它有效
  • 最好将这个问题标记为 python-2.7,因为我认为是这种情况。 python 2和python 3之间的Unicode字符串处理非常不同。

标签: python list unicode


【解决方案1】:

在每个循环中,您将打印一个包含单个元素的列表,即[u'Nature'][u'Mountain'] 等。

如果你删除括号,即[sample_tags_list['raw'].decode('utf-8')]sample_tags_list['raw'].decode('utf-8'),你应该只得到字符串。

不知道为什么你的附加不起作用,因为

output = []
for sample_tags_list in sample_photo_rep["photo"]["tags"]["tag"]:
  output.append(sample_tags_list['raw'].decode('utf-8'))

应该可以解决问题。列表理解将完成与@abccd 的答案相同的事情;两者都给出相同的输出。

【讨论】:

    【解决方案2】:

    在代码顶部声明一个空列表,如下所示:

    tags = []
    

    然后,不要将其打印在您的 for loop 中,而是将其附加到列表中:

    for sample_tags_list in sample_photo_rep["photo"]["tags"]["tag"]:
        tags.append([sample_tags_list['raw'].decode('utf-8')])
    

    那么标签应该是这样的:

    [u'nature', u'mist', u'mountain']
    

    进一步阅读

    关于追加到列表的信息:https://www.tutorialspoint.com/python/list_append.htm

    关于列表的一般信息: https://developers.google.com/edu/python/lists

    【讨论】:

      【解决方案3】:

      你总是可以像这样使用列表推导:

      print [sample_tags_list['raw'].decode('utf-8') for sample_tags_list in sample_photo_rep["photo"]["tags"]["tag"]]
      

      代替您的for loop。到目前为止,这仍然是最优选的方式。您可以查看pydoc,了解使用列表组合的简单示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-27
        • 2023-01-28
        • 1970-01-01
        • 2016-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多