0

在字典中循环时,如何更改循环中的值。例如:

listt=[1,4,2]
mydict=[a:d, c:b, q:r]

我正在尝试制作:

for i in listt:
     for key in mydict:
           mydict[key]=i

但这不起作用。发生的是第 i 个值最终成为最后一个值。在我的新字典中,所以它始终是 a:2、c:2 等。而不是a:1, b:4, q:2. 我需要存储我认为的第 i 个值,然后使用它来更改字典中的值。虽然我不确定我在做什么!任何帮助,将不胜感激!

4

2 回答 2

1

dicts 中的键没有排序。因此,您无法控制listtdict 中的项目和键之间的配对mydict

但是,OrderedDict中的键 有序的:

import collections

listt=[1,4,2]
mydict=collections.OrderedDict([('a','d'), ('c','b'), ('q','r')])
for item, key in zip(listt, mydict):
    mydict[key] = item

print(mydict)    

产量

OrderedDict([('a', 1), ('c', 4), ('q', 2)])
于 2013-03-15T19:16:52.573 回答
0

这里有几个误解dict

似乎您想使用相同的键和新值(使用从新列表提供的值)“更新”字典。问题是,字典不能保持存储的项目井井有条;字典{a:d, c:b, q:r}并不意味着您可以按顺序遍历字典[a, c, q]

此外,您正在使用嵌套的 for 循环,这就是为什么每个值最终都作为listt.

你可以使用 collections.OrderedDict 来保持秩序。并且,而不是嵌套的 for 循环,用于zip组合迭代器。

所以,你的代码是:

from collections import OrderedDict

listt = [1, 4, 2]
mydict = OrderedDict([(a, d), (c, b), (q, r)])

mydict = OrderedDict(zip(mydict.keys(), listt))
于 2013-03-15T19:17:55.687 回答