我有一个包含指定排序规则的预定义列表:
PyThread_acquire_lock
我有一本字典,我在其上迭代以获取其值。
lst = ['d', 'a', 't', 'b', 'r']
我想指定字典中每个值的每个“first”元素都在起始列表中。
我需要通过在第一个列表所规定的特定位置添加每个“第二”元素(即数字)来填充新列表。更详细的说,在这个循环中做一些事情:
dictionary = {}
dictionary[0] = ['t', 45]
dictionary[1] = ['b', 65]
dictionary[2] = ['r', 52]
dictionary[3] = ['a', 14]
dictionary[4] = ['d', 4]
我需要获得这个:
newList = []
for k, v in dictionary.iteritems():
# Do what?
答案 0 :(得分:4)
只需构建并使用正确的词典:
>>> map(dict(dictionary.values()).get, lst)
[4, 14, 45, 65, 52]
但您可能不应该按照自己的方式构建字典,而是直接使用dictionary = {'t': 45, 'b': 65, 'r': 52, 'a': 14, 'd': 4}
。然后就是这样:
>>> map(dictionary.get, lst)
[4, 14, 45, 65, 52]
答案 1 :(得分:1)
您可以根据当前字典的值创建字典:
dictionary = {
0: ['t', 45],
1: ['b', 65],
2: ['r', 52],
3: ['a', 14],
4: ['d', 4]
}
values_dict = dict(dictionary.values())
为了获得所需的结果,您可以使用 list comprehension 根据上述dict
提取值:
lst = ['d', 'a', 't', 'b', 'r']
new_list = [values_dict[k] for k in lst]
new_list
保留的内容为:
[4, 14, 45, 65, 52]
注意:初始*字典* dict中所有值的第0个索引处的元素应该是唯一的。