【问题标题】:How should I get list from string in Python?我应该如何从 Python 中的字符串中获取列表?
【发布时间】:2019-03-28 02:13:10
【问题描述】:

我从字典中得到一些值。但是当我打印出它们时它显示在底部,我需要将它们折叠成一个列表。

我尝试了很多方法。还要列出理解。

更新: 我的字典数据是:

Hours= [
   {'kota': 3, 'saat': '09:00'},
   {'kota': 3, 'saat': '09:20'},
   {'kota': 3, 'saat': '09:40'},
   {'kota': 3, 'saat': '10:00'},
   {'kota': 3, 'saat': '10:20'},
   {'kota': 3, 'saat': '10:40'},
   {'kota': 2, 'saat': '11:00'},
   {'kota': 2, 'saat': '11:20'},
   {'kota': 2, 'saat': '11:40'},

]

我从 dic 返回值:

for hour in hours:
a = hour.get("saat")  # From dicionary
print(a)

我的回报:

09:00
10:00
10:20

但我应该展示它们:

['09:00', '10:00', '10:20']

【问题讨论】:

  • 请同时发布您的dict
  • 你能分享你的尝试吗?
  • 将它们添加到列表中; print 纯粹是为了视觉效果(比如看看你有什么);它不构建任何类型的结构。

标签: python list dictionary for-loop


【解决方案1】:

列表推导式可能是最好的选择:

mylist = [hour.get("saat") for hour in Hours]

mylist = [hour["saat"] for hour in Hours]

【讨论】:

    【解决方案2】:

    在开始时声明一个空列表。遍历字典并将每个项目附加到列表中。

    整个迭代完成后,在循环外打印列表。

    【讨论】:

      【解决方案3】:

      Oneliner:

      list(map(lambda x:x.get('saat'), Hours))
      

      输出:

      ['09:00',
       '09:20',
       '09:40',
       '10:00',
       '10:20',
       '10:40',
       '11:00',
       '11:20',
       '11:40']
      

      【讨论】:

        【解决方案4】:

        您可以创建一个空列表,例如 mylist 并附加到列表。在您的代码中,字典是 Hours,但您在 for 循环中使用了 hours。

        mylist = []
        for hour in Hours:
            mylist.append(hour.get("saat"))  # From dicionary
        print(mylist)
        

        【讨论】:

          【解决方案5】:

          使用python的列表来实现你想要的打印。

          listTmp = []
          for hour in hours:
              a = hour.get("saat")  # From dicionary
              listTmp.append(a)
          print(listTmp)
          

          【讨论】:

          • 字符串如何比字符串列表占用更少的内存?此外,由于字符串是不可变的,重复连接可能会变得非常昂贵。
          【解决方案6】:

          您可以使用列表推导:

          >>> print([hour.get("saat") for hour in Hours])
          ['09:00', '09:20', '09:40', '10:00', '10:20', '10:40', '11:00', '11:20', '11:40']
          

          另外,请记住,您可以将 hour.get("saat") 更改为 hour["saat"]

          >>> print([hour["saat"] for hour in Hours])
          ['09:00', '09:20', '09:40', '10:00', '10:20', '10:40', '11:00', '11:20', '11:40']    
          

          另外,不确定您是否需要它,但如果您只是在控制台上寻找单行可视化,则可以使用 str.join(iterable)

          >>> print(", ".join([hour["saat"] for hour in Hours]))
          09:00, 09:20, 09:40, 10:00, 10:20, 10:40, 11:00, 11:20, 11:40
          

          【讨论】:

          • 这可能令人惊讶,但使用str.join 的生成器实际上更慢。如果参数不是列表,本质上 Python 对参数所做的第一件事就是将其转换为列表。由于涉及的开销,生成器的速度稍慢。
          • @Tomothy32,哦,我不知道!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-24
          • 1970-01-01
          • 2016-04-04
          • 2015-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多