gpt4 book ai didi

python - 如何在Python中检查key是否存在于values中以及values是否存在于key中

转载 作者:行者123 更新时间:2023-12-01 01:30:05 28 4
gpt4 key购买 nike

我需要迭代字典的帮助。这可能不是那么明智的做法,但我需要尝试一下。

我有一个这样的字典:

{'a': 'b', 
'b': 'c',
'c': 'd',
'm':'n',
'p':'r',
'r': 't'}

我需要什么作为输出,它可以是字典或数据框:

'a' : ['b', 'c', 'd'], 
'b' : ['c', 'd'],
'c': ['d'],
'm': ['n'],
'p': ['r', 't'],
'r': ['t']

我尝试过:

dict_output = {}
for k, v in my_dict.items():
lista = []
for ki, va in my_dict.items():
if v in ki:
lista.append(va)
dict_l.update({k:lista})

但这只会迭代一次,我不知道如何再次迭代,直到链断裂。

编辑: enter image description here

最佳答案

定义一个小函数(例如,get_key)来递归地遍历字典(例如,oct)yield 键一一:

def get_key(dct, key):
while key in dct:
key = dct[key]
yield key

现在,通过在字典理解中调用 get_key 来构建新字典。

{k : list(get_key(dct, k)) for k in dct}
{'a': ['b', 'c', 'd'],
'b': ['c', 'd'],
'c': ['d'],
'm': ['n'],
'p': ['r', 't'],
'r': ['t']}
<小时/>

处理周期
请注意,如果您的“图”有循环(a:b 和 b:a),则这不会终止。您可以通过维护一组已访问节点来解决此问题:

def get_key_handle_cycles(dct, key):
visited = set()
while key in dct and key not in visited:
visited.add(key)
key = dct[key]

yield key

并以同样的方式调用该函数。

关于python - 如何在Python中检查key是否存在于values中以及values是否存在于key中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52975304/

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