如何替换列表/字典中的键?

时间:2019-07-13 19:14:20

标签: python list dictionary

我在该列表字典中有一个列表,该如何替换该字典的键?

a = [{ 1:'1',2:'2',3:'3',4:'4',5:'5',1:'1'}]
for n, i in enumerate(a):
if i == 1:
   a[n] = 10

1是必须替换为10的关键,因此我尝试了上述方法,但无法执行 我想要的最后一件事是

a = [{ 10:'1',2:'2',3:'3',4:'4',5:'5',10:'1'}]

2 个答案:

答案 0 :(得分:1)

原文:

INNER JOIN wp_woocommerce_order_itemmeta AS order_item_meta__qty
                    ON (order_items.order_item_id = order_item_meta__qty.order_item_id) AND
                       (order_item_meta__qty.meta_key = '_bv_qty')

首先要知道的是,数组从0开始。您有

   a = [{ 1:1,2:2,3:3,4:4,5:5,1:1}]
   for n, i in enumerate(a):
       if i == 1:
          a[n] = 10

因此,您的代码将永远不会执行。

您的字典中也有一个重复的键-两次使用1。

由于您的字典在列表中,因此它必须像这样索引:

if i == 1:

其中i指的是列表中的哪个元素,j指的是字典中的哪个元素。

最后,您的i和n颠倒了-枚举将索引放在第一个变量中。

因此,如果我正确理解您要完成的工作,则最终结果应该看起来像这样:

a[i][j] = ...

如果您想更改多个键的值,那么我可能会执行以下操作:

a = [{1:1,2:2,3:3,4:4,5:5}]
for i, n in enumerate(a):
    if i == 0:
        a[0][1] = 10

print(a)

编辑:上面的一切仍然正确,但是正如您和Tomerikoo指出的那样,它并不能完全回答问题。我很抱歉。以下代码应该可以工作。

a = [{1:1,2:2,3:3,4:4,5:5}]
toChange = [[1,10], [4, 76]] # 1 and 4 are the keys, and 10 and 76 are the values to change them to
for i, n in enumerate(a):
    if i == 0:
        for change in toChange:
            a[0][change[0]] = change[1]

print(a)

答案 1 :(得分:0)

在这里我不会使用enumerate。请注意,第一个键的值被覆盖。

a = [{1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 1: '1'}]  # duplicate key
print(a)            # [{1: '1', 2: '2', 3: '3', 4: '4', 5: '5'}]  (got overwritten)
a[0][10] = a[0][1]  # copy the value of the key 1 to the key 10
a[0].pop(1)         # remove the key 1
print(a)            # [{2: '2', 3: '3', 4: '4', 5: '5', 10: '1'}]

另外,请注意,在原始示例中,if块的缩进是错误的。