如何将文本转换为dict以便在python中迭代它?

时间:2017-04-23 14:53:59

标签: python django python-2.7

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

[{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)

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

3 个答案:

答案 0 :(得分:0)

从数据库中检索以下代码的数据后,是否可以检查返回数据类型:

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

使用type(order)确定返回值的类型。可能是上述数据的返回数据是字符串格式。在这种情况下,当您将列表存储到数据库中时,您可能会考虑先使用json.dumps()转换数据,然后再检索数据,您可以使用json.loads()来恢复原始数据类型。在这种情况下,您可以考虑将数据库列类型更改为blob

答案 1 :(得分:0)

假设订单是一个字符串

O(1)

答案 2 :(得分:0)

或者为了使其更简单,您可以使用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