在相同的dict值中递归搜索dict键
我认为我很好地理解了递归,但在这种情况下我已经没有想法了。 所以基本上我们有一个字典,如下所示:
{
'Key_1': 'Hello world',
'Key_2': 'One',
'Key_3': 'Bar Key_1',
'Key_4': 'Foo Key_3 foo',
'Key_5': 'Baz Key_1'
}
每个字典键都可以作为另一个键值内的子字符串出现。 我想要获得的是另一个字典,其中键将保留,但值将是该键出现在另一个键的值下的地址。所以基本上我想要得到的结果是:
{
'Key_1': ['Key_3', 'Key_4', 'Key_5'],
'Key_2': [],
'Key_3': ['Key_1'],
'Key_4': ['Key_3', 'Key_1'],
'Key_5': ['Key_1']
}
所以基本上我想找到最低级别(例如Key_1)并找到直接或间接使用的所有较高级别(Key_4在列表中,因为它使用Key_3,而Key_3使用键_1)。如果任何键未在任何地方使用,则仅返回一个空列表(例如 Key_2 情况)。 钥匙也没有订购。
真的有办法解决这个问题吗?任何形式的帮助表示赞赏! 我不会发布我的代码,因为它对我毫无帮助。
I understand recursion pretty good I think, but in this case I ran out of ideas.
So basically we have a dict as below:
{
'Key_1': 'Hello world',
'Key_2': 'One',
'Key_3': 'Bar Key_1',
'Key_4': 'Foo Key_3 foo',
'Key_5': 'Baz Key_1'
}
Each of dict keys can appear as a substring inside another key's value.
What I want to obtain is to get another dict, where the keys will remain, but the values will be adresses of where such key appears under another key's values. So basically the result I want to get is:
{
'Key_1': ['Key_3', 'Key_4', 'Key_5'],
'Key_2': [],
'Key_3': ['Key_1'],
'Key_4': ['Key_3', 'Key_1'],
'Key_5': ['Key_1']
}
So basically I want to find the lowest level (such as Key_1) and find all the higher levels which are using directly or indirectly (Key_4 is in the list because it uses Key_3, and Key_3 uses Key_1). If any of the keys is not used anywhere, just return an empty list (such as Key_2 case).
Also the keys are not ordered.
Is there really any way to solve this? Any kind of help is appreciated!
I'm not posting my code because it has gotten me nowhere.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果dict不太大,可以使用dict理解和列表理解来编写幼稚的蛮力解决方案:
If the dict is not too big, a naive bruteforce solution can be written using dict comprehension and list comprehension: