我在该列表字典中有一个列表,该如何替换该字典的键?
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'}]
答案 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
块的缩进是错误的。