【问题标题】:Remove element from list if it's a value of a key more than once如果元素的值不止一次,则从列表中删除元素
【发布时间】:2021-07-21 05:35:49
【问题描述】:

所以,这个问题很难浓缩成标题,但这里有一个详细的解释。

我有一个包含数千个键值对的大型字典,可能有以下示例:

dict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}

注意“apple”是一个键,它的值是列表,列表包含“mint”元素。

在我的大字典“mint”中的某个地方也可能是一个键,它可能有一个包含元素“apple”的水果列表。因为它是字典第二个元素中的键。

问题是我想保留这对苹果和薄荷,无论哪个是关键,但我想要一个精炼的字典,它们不会形成重复。 p>

所以想要的字典是:

dict_2 = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['orange', 'banana']}

'mint' 列表中的 'apple' 元素已被删除,

dict_2 = {'apple' : ['nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}

'apple' 列表中的 'mint' 元素已被删除。

编辑:我找到了解决这个问题的方法。你可以在下面找到它

【问题讨论】:

  • 欢迎来到 Stack Overflow!这不是一个人们为您编写代码以便您不必编写代码的网站。如果您需要帮助调试您编写的代码,您必须发布Minimal, Complete, and Verifiable example 并解释您的代码的具体问题。
  • (key, value) 遍历dict.items() 并为dict[key] 中的每个值检查字典中是否存在另一个(value, key)。如果是这样,请从其中一个中删除该对。另外,为了快速操作,我建议您使用set 的值进行精炼。如果它适合您,您可以稍后将其转换为列表或保持不变。

标签: python list dictionary list-comprehension


【解决方案1】:
mydict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}

由于这看起来像家庭作业,并且您没有展示任何工作或提出特定问题,我将为您提供算法提示,但编写代码取决于您。

你想要

  • 遍历字典中的每个key, value

  • 例如key = "apple"; value = ['mint', 'nutmeg', 'cinnamon']

    • 迭代每个元素v的`value:
    • 如果mydict 包含密钥v
      • 检查mydict[v] 的列表是否包含key
      • 如果没有,请将元素 v 添加到 new_list
      • 如果是,请跳过添加v
    • mydict[key] 设置为新创建的new_list

将其转换为代码非常简单,您甚至可以将其编写为很酷的两行代码。如果您遇到问题并有具体的问题,请随时提问!

mydict 上运行此算法的代码后,我得到:

{'apple': ['nutmeg', 'cinnamon'], 'mint': ['apple', 'orange', 'banana']}

【讨论】:

  • 欣赏提示!
【解决方案2】:

下面的代码解决了这个问题。如果有人想通过制作精美的单线来炫耀,请随意这样做:)

    for key, value in my_dict.items(): # iterate over each key, value
        for v in value:
            if v in my_dict.keys() and key in my_dict[v]:
                my_dict[v].remove(key)
            else:
                continue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    相关资源
    最近更新 更多