我想将字典中的所有值更改为不同的值。 例如,在字典中
dic = {'a': 1, 'b':2, 'c':3, 'd':4, 'e': 5, 'f':6}
lst = [100, 200, 300, 400, 500, 600]
我想将dic
的值更改为lst
中的数字
dic = {'a': 100 ,'b': 200 ... }
。
有没有办法在不使用键名的情况下更改所有值?我实际字典的长度大约是100。
答案 0 :(得分:4)
如果您需要将dict
中的每个数字乘以100,则可以使用dict comprehension一次迭代所有值。
dic = {'a': 1, 'b':2, 'c':3, 'd':4, 'e': 5, 'f':6}
dic = {k: v*100 for k, v in dic.items()}
如果您希望将列表中的数字专门分配给字母表中的字母(按相同顺序)you can zip your list with small caps letters,并使用此list
来构建您的dict
:
from string import ascii_lowercase
# you can do this with a dict comprehension
dic = {k: v for (k, v) in zip(ascii_lowercase, lst)}
# or equivalently, call the dict() built-in function
dic = dict(zip(ascii_lowercase, lst))
在最后一个示例中,列表的顺序将反映在字母表的字母顺序中。因此a
将为100
,b
将为200
等。
但是你不能让dict
记住它"命令"。在dict
中没有订单,您可以选择值并单独设置它们,而不是通过保证订单迭代它们(如另一个答案中所述,您需要OrderedDict为此)。
答案 1 :(得分:0)
简短的回答:不,字典不是在python中排序的,所以没有简单的方法来匹配值。
更长的答案:排序,你可以使用Ordered Dictionaries。
dic={'a': 1, 'b':2, 'c':3, 'd':4, 'e': 5, 'f':6}
o_dic = OrderedDict(sorted(dic.items(), key=lambda t: t[0]))
lst=[100,200,300,400,500,600]
for index, key in enumerate(o_dic.keys()):
o_dic[key] = lst[index]