【问题标题】:how to convert a text to dict in order to iterate it in python?如何将文本转换为 dict 以便在 python 中对其进行迭代?
【发布时间】:2017-09-20 05:20:31
【问题描述】:

我想要做的是迭代。我的数据库表的一列中有这行代码:

[{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}]

我将它分配给一个可变顺序,所以我有:

order = [{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}]

那么 我想迭代它。我正在尝试以下操作:

   for o in order.items():
        product = o['item']
        ...

它不起作用。如何转换?

    for order in orders:
        ord = order.shopping_cart_details # [{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}]
        temp = {'order_id': order.id, 'movies': ord['item'], 'created': order.created}
        full_results.append(temp)

我得到的字符串索引必须是整数

【问题讨论】:

  • 您忘记包含完整的错误消息。我可以猜测它是AttributeError,因为列表对象没有.items() 方法,但请明确不起作用不是问题描述。
  • @MartijnPieters 我编辑我的问题..
  • 请包含完整的回溯。其中包含很多我们现在必须猜测的信息。

标签: python django python-2.7


【解决方案1】:

或者为了更简单,你可以使用eval函数。

order = '[{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}]'
order = eval(order)
for o in order:
    product = o['item']
    print product

【讨论】:

    【解决方案2】:

    假设订单是一个字符串

    order = '[{"item": 5, "quantity": 2},{"item": 6, "quantity": 1}]'
    
    def doSomething():
        import json
        ord = json.loads(order) 
        values =[ v['item'] for v in ord] # if u want a single item u put values = v.pop()['item']
    

    【讨论】:

      【解决方案3】:

      您能否在从数据库中检索以下代码的数据后检查返回数据类型:

      [{u"item": 5, u"quantity": 2},{u"item": 6, u"quantity": 1}]
      

      使用type(order) 来确定返回值的类型。上述数据的返回数据可能是字符串格式。这种情况下,将列表存入数据库时​​,可以考虑先用json.dumps()转换数据,再取回数据时,可以用json.loads()取回原来的数据类型。在这种情况下,您可以考虑将数据库列类型更改为blob

      【讨论】:

      • 我检查了一下,你是对的。我作为字符串存储在数据库中。如果我改变它并按照你的方式做,我以后如何迭代它?我想获取数组中的每个项目。谢谢!
      • 如果将上述信息存储在json.dumps()之后,在从数据库中检索信息后,你可以只做一个json.loads()。例如,order = database.getdata() 然后 order = json.loads(order),在这一步之后你可以使用 : for every_item in order: item_id = every_item['item'] item_quantity = every_item['quantity'] 。请更改缩进和格式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2019-08-25
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多