我想将键更改为python字典中的值,但原始字典中的值不是唯一的。
以下是我所拥有的:
year_person = {2000: ‘Linda’, 2001: ‘Ron’, 2002: ‘Bruce’, 2003: ‘Linda’, 2004: ‘Bruce’, 2005 ‘Gary’, 2006: ‘Linda’}
我想把它改成:
person_year = {‘Linda’: 2000, ‘Ron’: 2001, ‘Bruce’: 2002, ‘Linda’, 2003: ‘Bruce’, 2004 ‘Gary’, 2005: ‘Linda’: 2006}
当我试图使用for循环转换它时,我只为每个人得到一对匹配的。
只是为了提供当前答案中可能缺少的其他选项和信息:
如果你确信你的价值观是独一无二的,因此可以成为关键,最简单的方法就是听写理解:
当然,在您的情况下,它们不是,所以这不起作用(因为它只给出最后找到的值):
相反,我们可以在dict comp中使用嵌套的list comp:
给我们:
这是可行的,但由于必须循环遍历每个条目的整个字典,因此效率不高。更好的解决方案是由alan给出的the ^{} solution ,它只需要一个循环。
也可以使用defaultdict:
你不想达到的目标在技术上是不可行的。字典的键不能重复,因为如果重复,则不能用键为字典唯一索引。
您可以做的是创建(键,值)对的字典,其中value是具有相同键的所有项的列表。为了达到这个目的,你可以做如下的事情
注意,如果您只对键值对感兴趣,而不是对字典本身感兴趣,那么您可以将其存储为一个元组列表,如下所示
相关问题 更多 >
编程相关推荐