Python 在不使用键名的情况下更改字典中的许多值

Python 在不使用键名的情况下更改字典中的许多值,python,list,dictionary,Python,List,Dictionary,我想将字典中的所有值更改为不同的值。 例如,在字典中 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。如果需要将dict中的每个数字乘以100,可以使用 如果您想将列表中的数字指定给字母表中的字母(顺序相同

我想将字典中的所有值更改为不同的值。 例如,在字典中

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。

如果需要将
dict
中的每个数字乘以100,可以使用

如果您想将列表中的数字指定给字母表中的字母(顺序相同),请使用此
列表
构建您的
目录

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)。

如果您需要将
dict
中的每个数字乘以100,您可以使用

如果您想将列表中的数字指定给字母表中的字母(顺序相同),请使用此
列表
构建您的
目录

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中没有顺序,您可以选择值并单独设置它们,而不是以保证的顺序遍历它们(如另一个答案中所述,您需要OrderedDict)。

简短回答:不,字典在python中没有顺序,因此没有简单的方法来匹配值

更详细的回答:你可以使用有序字典

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]

简短回答:不,字典在python中没有顺序,所以没有简单的方法来匹配值

更详细的回答:你可以使用有序字典

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]

既然字典没有顺序,您想如何将“b”与200连接起来?你会接受按顺序排列的键吗,还是根本不关心分配顺序?(例如,你对
{b:100,“a:200}
没问题)我想保持秩序。在我的实际工作中,“a”表示第一个,“b”表示第二个等等。字典没有维护的顺序。如果您想对独立于顺序(不存在)的值执行操作(如将它们乘以100),这不会是一个问题,但是如果您已经构建了一个单独的列表,这将是一个问题。您需要使用一个,以便有任何顺序开始!既然字典没有顺序,您想如何将“b”与200连接起来?你会接受按顺序排列的键吗,还是根本不关心分配顺序?(例如,你对
{b:100,“a:200}
没问题)我想保持秩序。在我的实际工作中,“a”表示第一个,“b”表示第二个等等。字典没有维护的顺序。如果您想对独立于顺序(不存在)的值执行操作(如将它们乘以100),这不会是一个问题,但是如果您已经构建了一个单独的列表,这将是一个问题。您需要使用一个,以便有任何顺序开始!非常感谢您的回答!!!!但在我的原著中,值不是100200300400500600。。。实际上它们是23.554,35.124,35.222。没有模式。我想这是我的错误question@SunwooLim正如前面的评论中提到的那样,这才是真正的问题所在。dict不维护顺序,因此只有当函数在所有值上都是常量时,它才真正起作用。否则每次运行都会得到不同的结果。@Chris
dic={k:v for(k,v)in-zip(ascii_-lowercase,lst)}
每次都给出相同的结果-只是它们以不同的顺序显示,但是
dic['a']
始终等于
100
(在OP的示例中)@我确实误解了你的问题。查看我的编辑。不需要dictcomp:
dict(zip(ascii\u小写,lst))
也可以使用。我可能会使用dict(zip(sorted(dic),lst))来代替,这至少会给出一个一致的结果,但是除非OP明确说明他想象的顺序,否则我们只是猜测。非常感谢你的回答!!!!但在我的原著中,值不是100200300400500600。。。实际上它们是23.554,35.124,35.222。没有模式。我想这是我的错误question@SunwooLim正如前面的评论中提到的那样,这才是真正的问题所在。dict不维护顺序,因此只有当函数在所有值上都是常量时,它才真正起作用。否则每次运行都会得到不同的结果。@Chris
dic={k:v for(k,v)in-zip(ascii_-lowercase,lst)}
每次都给出相同的结果-只是它们以不同的顺序显示,但是
dic['a']
始终等于
100
(在OP的示例中)@我确实误解了你的问题。查看我的编辑。不需要dictcomp:
dict(zip(ascii\u小写,lst))
也可以使用。我可能会使用dict(zip(sorted(dic),lst)),这至少会给出一个一致的结果,但除非OP明确说明他想象的顺序,否则我们只是猜测。