如何获取与Python字典中的值对应的键?

如何获取与Python字典中的值对应的键?,python,Python,假设我有一本字典: my_dict = {'A' : 250, 'B' : 270, 'C' : 240} 我有一个列表,其中的值按降序排列: my_list = [270, 250, 240] 现在,我想创建一个如下所示的列表: new_list = ['B', 'A', 'C'] 这些元素是按照我的清单排序的。我怎样才能做到这一点?谢谢。my_dict={'A':250,'B':270,'C':240} 我的清单=[270250240] def getKeyvalue: 对于my_di

假设我有一本字典:

my_dict = {'A' : 250, 'B' : 270, 'C' : 240}
我有一个列表,其中的值按降序排列:

my_list = [270, 250, 240]
现在,我想创建一个如下所示的列表:

new_list = ['B', 'A', 'C']
这些元素是按照我的清单排序的。我怎样才能做到这一点?谢谢。

my_dict={'A':250,'B':270,'C':240} 我的清单=[270250240] def getKeyvalue: 对于my_dict.items中的key、val: 如果val==值: 返回键 答案=listmapgetKey,我的列表 打印答案 如果你只想对字典排序,你不需要额外的列表。您可以这样做:

我的字典={'A':250,'B':270,'C':240} ordered=dictsortedmy\u dict.items,reverse=True,key=lambda item:item[1] 答案=listordered.keys 打印答案
首先,使用将字典倒置。然后使用以获取所需列表:

inv_dict = {y: x for x, y in my_dict.items()}
new_list = [inv_dict[x] for x in my_list]
print(new_list)
# ['B', 'A', 'C']

如果允许您假设dict值中没有重复项,则可以反转dict:

my_dict = {'A' : 250, 'B' : 270, 'C' : 240}
my_list = [270, 250, 240]
inverse_dict = dict([(val, key) for key, val in my_dict.items()])
output = [inverse_dict[key] for key in my_list]
当然,如果允许重复值,则必须重新指定问题以定义重复情况下的行为,因为假设没有重复值似乎是合理的


当然,这在很大程度上违背了dict数据结构的本质,我们不禁要问,为什么这些数据首先会以错误的dict的形式出现在我们面前。这样的解决方案意味着某些地方需要重构。

我发现最简单的方法是使用字典理解

my_dict = {'A' : 250, 'B' : 270, 'C' : 240}
my_list = [270, 250, 240]
answer = []
for num in my_list:
    for key, value in my_dict.items():
        if num == value:
            answer.append(key)
一行:

new_list=listdictsorted{v:k代表k,v在my_dict.items}.items中,reverse=True.values 因为它变得有点凌乱,我将从内部到外部进行分解

{v:k代表k,v在my_dict.items}:这部分只是切换键和值。在这个例子中,从{A':250,'B':270,'C':240}到{250'A',270'B',240'C'} 排序{v:k代表k,v在my_dict.items}.items中,reverse=True:这将接受修改过的字典,并按其键对其进行排序。请记住,本词典中的键是原始的值。通过传递reverse=True,项目按数字降序排序 dictsorted{v:k代表k,v在my_dict.items}.items中,reverse=True:使用sorted返回键、值对的元组列表。使用dict函数将这些对转换为字典 listdictsorted{v:k代表k,v在my_dict.items}.items中,reverse=True.values:因为我们只需要字母的值,所以使用values方法。将其传递到列表以将数据从dictValues类型更改为列表类型。 就是这样,

代码语法

输出


我能想到的最好的方法是用值和键创建新的字典,因为当前字典中可能有重复的值。迭代dict并获取旧字典中的键值。这是否回答了您的问题?我建议多用几行字和几个名字。如果你需要12行解释,你的一行可能太短了,特别是出于教学目的。
my_dict = {'A' : 250, 'B' : 270, 'C' : 240}
my_list = [270, 250, 240]

def valKey(dict, list):
    return [key for val in list for key, value in dict.items() if val == value]


print(valKey(my_dict, my_list))
['B', 'A', 'C']

[Program finished]