如何在Python中检查键是否存在于值中以及键中的值

乔维奇

我需要遍历字典的帮助。这可能不是很聪明的方法,但是我需要尝试。

我有这样的命令:

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

我需要作为输出,它可以是dict或dataframe:

'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})

但这只重复一次,直到链断裂之前,我不知道如何再次重复。

编辑: 在此处输入图片说明

cs95

定义一个小函数(例如get_key),以递归遍历字典(例如,oct)然后yield逐个键入关键字):

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

现在,通过调用get_keydict理解来构建新词典

{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),这不会终止。您可以通过维护一组visited节点来解决此问题

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

并以相同的方式调用此函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查键及其值是否存在于对象中

如何检查键是否存在于对象数组中

查找键和值对是否存在于json中

如果键,值对存在于字典中,则跳过python

检查键是否存在于数组中并替换其值

检查数组 1 的值是否存在于数组 2 的键中 - PHP

如何检查值是否存在于struct中?

如何在jquery / javascript中检查数组中的值是否存在于数组中

检查键是否存在于JavaScript对象中?

Javascript:检查键是否存在于对象数组中

检查键是否存在于OrderedDict中

如果键已存在于字典中,如何向其添加多个值(Python)

删除键(如果它们存在于地图的值中)

如何检查数组键是否存在于php中的多维数组中

如何验证键是否存在于数组中

检查键是否存在于Presto值映射中

检查键的值,该值存在于 javascript 对象内的许多不同的父键中

如何检查数组键是否存在于已定义的常量数组中[PHP 7 define()]

检查值是否已存在于字典列表中?

检查值是否已存在于Firebase中?

检查值是否存在于多维数组中

检查列值是否存在于字典[pandas]中

Python:如果值存在于字典中较长的键中,则从字典值列表中删除值

如何检查列表值是否存在于也是列表的列值中

如何检查数组1中每个值的顺序,是否存在于数组2中并删除?

如何检查一个值是否存在于javascript中的数组中?

检查数组中是否存在键/值对

检查一个键是否存在于数组中的所有对象中并设置一个布尔值

如何检查属性是否存在于 JSON 中并且它的值也为真