繁体   English   中英

如何在嵌套字典中 select 元素并递归删除它们

How to select elements in a nested dictionary and delete them recursively

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我已经生成了一个嵌套字典作为 JSON ,其中包含一个概念,然后在从网站或不同的 JSON (称为“ALTERNATIVE”)抓取的句子中引用该概念,并具有关联的超类(请参阅超链接和下面的实际最小值可行的例子):

"Glide": {"superclasses": {"Entity": [{"source": "ALTERNATIVE"}]}}, "Yacht": {"superclasses": {"Boat": [{"reference": "Originally, yachts were sailing-boats, but now there are also motor yachts.", "source": "https://simple.wikipedia.org/wiki/Yacht"}, {"reference": "A yacht is a type of boat which is mainly used for recreation.", "source": "https://simple.wikipedia.org/wiki/Yacht"}], "Vessel": [{"reference": "In sailboat racing, a yacht is any sailing vessel taking part in a race.", "source": "https://simple.wikipedia.org/wiki/Yacht"}]}}, "Yam": {"superclasses": {"Vegetable": [{"reference": "A yam is a root vegetable.", "source": "https://simple.wikipedia.org/wiki/Yam"}, {"reference": "Yam is a vegetable that can be cooked in many ways.", "source": "https://simple.wikipedia.org/wiki/Yam"}], "Name": [{"reference": "Yam is the common name for some species in the genus Dioscorea.  ", "source": "https://simple.wikipedia.org/wiki/Yam"}]}},

我想为嵌套字典中的键(例如“Yacht”)做的是查看它的“超类”(例如在本例中为“Boat”和“Vessel”)并查看它们是否是键我的嵌套字典。

目前,我已将嵌套字典转换为“(键,超类)”形式的元组列表,该列表按照每个键有多少超类(按降序排列)进行排序,以使事情变得更容易。

    import json
    from nltk.corpus import wordnet as wn
   
    
    ## importing the nested dictionary
    tax = json.load(open("data/nested_dict.json"))
    
    ## Converting our nested dictionary into a list of tuples
    tax_list = [(key, value) for key, value in tax.items()]
    
    ## Sorting out list with tuples in descending order of how many superclasses they have
    tax_list.sort(key=lambda x: len(x[1]["superclasses"].keys()), reverse = True)

谢谢,

标记

1 个回复
# Get all Keys in Master Dictionary and Convert to a LIST
allKeys = tax.keys()
allkeys = list(allkeys)  # Convert to a 'list' data structure so you can check it in one line of code (see below)

# I assume you want the user to specify the key in question
myKey = input("Please input key: ")

# Get the Superclass Dictionary Associated with that Specific Key
superClassDictionary = tax[myKey]

# Iterate through the Keys in the superClassDictionary
for superclass in superClassDictionary.keys():
  if superclass in allKeys:
     print("Superclass {} of key {} is also a key in the master dictionary".format(superclass, myKey))
1 递归删除字典中的嵌套项目

目前,我正在创建两个列表,并比较它们是否重复。 取而代之的是,我想从字典中递归地删除嵌套项目 我的问题是,在执行此递归时,如何选择一个深度嵌套的项并更改字典? 当前功能: ...

2 使用递归函数删除嵌套字典中的空字典

我正在尝试从嵌套字典中删除非值。 我的第一次努力工作正常,但不幸的是,指向现在空字典的键仍然存在。 所以如果我这样做: 这有效,但我认为可能有更优雅的嵌套解决方案? 编辑: 失败的例子,下面的 dict 返回为{'foo': 'bar', 'bar': None} : ...

4 删除嵌套 python 字典中的特定元素

所以我有一个特定的 function 输出与文件列表相对应的嵌套字典,如下所示: 我需要删除这些字典的特定实例,例如,使用以下输入: 我想导航到dic["examples"]["apishowcase"]并删除 apishowcase.py 字典,但是,由于输入列表可以有任何大小和嵌套字典根据许多变 ...

6 根据列表中嵌套字典中的值删除字典元素

我正在尝试在嵌套字典中的列表中删除元素。 因此,我有一个列表,其中有一个字典作为其元素之一,然后又有一个字典作为其键值之一。 我知道我将在最上面的列表和最下面的字典中使用的键,而“中间”字典中的键是可变的。 如果底部字典中的值不等于某个值,我想删除“中间”字典中的元素。 我认为我需要 ...

7 从字典递归获取所有嵌套元素

我是python新手,刚在python中实现了我的第一个ID3,并以类似dict的形式编写了规则 我现在想输出为 我似乎无法做对 这是我的代码:假定将所有内容作为单个字符串返回,并用逗号分隔 ...

8 从嵌套字典递归删除项目

很抱歉这个愚蠢的问题,但是我在做什么错呢? 我已经嵌套了字典,希望将其转储到json中。 我需要从中删除所有“无”值。 这是我的代码: 不幸的是,代码无法按预期工作,并且仅从列表中删除第一个“无”。 我哪里错了? 谢谢 ...

9 圆形递归地嵌套在嵌套字典中

我正在尝试在具有其他值的嵌套字典中舍入浮点值。 我看着这个线程- 在Python的嵌套数据结构中舍入小数 尝试实现如下功能: 我收到此错误: 答案被标记为正确,所以我想知道是否需要更改任何内容。 这正是我要为字典实现的内容。 任何帮助表示赞赏! ...

10 如何从带有嵌套列表的列表中递归删除元素?

我正在尝试创建一个递归函数,它接受一个输入列表(带有嵌套列表)并从第二个输入数组中删除与元素匹配的所有元素。 我目前有这个: def removeElements(self, array, remove_elements): for element in array: if ...

2021-07-15 12:58:58 1 38   python
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM