gpt4 book ai didi

Python:查找与列表字典中的项目相对应的键

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:32 24 4
gpt4 key购买 nike

问题陈述

给定列表字典,

key_to_list = {
'one': [1, 3, 5, 7],
'two': [2, 4, 6, 8],
'three': [1, 2, 5, 6],
'four': [2, 5, 7, 8]
}

创建从列表元素到其键的映射的最佳方法是什么?

list_element_to_keys = {
1: {'one', 'three'},
2: {'two', 'three', 'four'},
3: {'one'},
4: {'two'},
5: {'one', 'three', 'four'},
6: {'two', 'three'},
7: {'one', 'four'},
8: {'two', 'four'}
}

我的解决方案

from collections import defaultdict

list_element_to_keys = defaultdict(set)
for key, value in key_to_list.items():
for item in value:
list_element_to_keys[item].add(key)

想法

我的一个 friend 建议可以使用字典理解,但我不断遇到问题因为多个键的列表包含一些相同的项目。

我还认为它们可能是一些可以提供帮助的 itertools 魔法,但我并不乐观。

字典理解

在 friend 的帮助下,我发现了一种有效的字典理解方法。

from itertools import chain
list_element_to_keys= { i: set(k for k,v in key_to_list.items() if i in v) for i in set(chain.from_iterable(key_to_list.values())) }

最佳答案

你也可以这样做

d = {}; [d.setdefault(i,[]).append(k) for k,v in key_to_list.items() for i in v]
print d

这会导致

{1: ['three', 'one'],
2: ['four', 'three', 'two'],
3: ['one'],
4: ['two'],
5: ['four', 'three', 'one'],
6: ['three', 'two'],
7: ['four', 'one'],
8: ['four', 'two']}

关于Python:查找与列表字典中的项目相对应的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com