【问题标题】:python dictionary questionpython字典问题
【发布时间】:2010-01-28 14:42:51
【问题描述】:

全部,

这是我得到的模板的请求

u'subjects': [u'7', u'4', u'5', u'3', u'2', u'1']

在我看来如何提取像7 4 5 3 2 1这样的值

我如何从

中提取上述序列
new_subjects=request.POST.get('subjects')

谢谢。

【问题讨论】:

    标签: python django


    【解决方案1】:

    类似于以下内容:

    try:
        int_subjects = [int(x) for x in new_subjects]
    except ValueError:
        #There was an error parsing.
    

    【讨论】:

    • 您不应该使用裸露的except 子句。
    • 我当时不记得正确的错误是什么。我想它要么可以用谷歌搜索,要么这里有人会知道。
    • 这很容易。运行 Python。输入int("hi mom") 你就知道了。这就是我所做的。我不依赖记忆——杜松子酒毁了我所拥有的一切。
    【解决方案2】:

    request.POSTQueryDict 的一个实例,它有一个名为 getlist 的方法,该方法返回给定键的值列表。

    例子:

    >>> new_subjects = request.POST.getlist('subjects')
    >>> print new_subjects
    [u'7', u'4', u'5', u'3', u'2', u'1']
    

    请参阅gnibbler's response 将列表项转换为整数。

    【讨论】:

      【解决方案3】:
      try:
          int_subjects = map(int, new_subjects)
      except ValueError:
          #There was an error parsing.
      

      在 ipython 中使用 timeit 表明在这种情况下 map 比理解略快

      In [99]: timeit map(int,new_subjects)
      100000 loops, best of 3: 7.81 µs per loop
      
      In [100]: timeit [int(x) for x in new_subjects]
      100000 loops, best of 3: 8.8 µs per loop
      

      【讨论】:

      • +1 用于尝试优化另一个答案(并成功地这样做了)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2019-10-13
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多