Python 如果元素为';s键的值不止一次
所以,这个问题很难浓缩到标题中,但这里有一个详细的解释 我有一个大型字典,它有数千个键值对,可以有以下示例:Python 如果元素为';s键的值不止一次,python,list,dictionary,list-comprehension,Python,List,Dictionary,List Comprehension,所以,这个问题很难浓缩到标题中,但这里有一个详细的解释 我有一个大型字典,它有数千个键值对,可以有以下示例: dict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']} 请注意,“apple”是一个键,它将列表作为其值,并且列表包含“mint”元素 在我的大字典中的某个地方,“mint”也可能是一个键,它可能有一个包含“apple”元素的水果列表。因为它是字典第二个元素中的键
dict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}
请注意,“apple”是一个键,它将列表作为其值,并且列表包含“mint”元素
在我的大字典中的某个地方,“mint”也可能是一个键,它可能有一个包含“apple”元素的水果列表。因为它是字典第二个元素中的键
问题是我想保留apple和mint这对,不管哪一个是关键,但我想要一个精致的词典,它们不会形成重复的
因此,所需词典为:
dict_2 = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['orange', 'banana']}
如果“薄荷”列表中的“苹果”元素已被删除
或
“苹果”列表中的“薄荷”元素已被删除
编辑:我找到了这个问题的解决方案。你可以在下面找到它
mydict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}
因为这看起来像是家庭作业,而且你还没有展示任何工作或者问过一个特定的问题,所以我会给你一些算法的提示,但是编写代码取决于你
你想
- 迭代字典中的每个
键、值
- e、 g.
key=“苹果”;值=[“薄荷”、“肉豆蔻”、“肉桂”]
- 迭代“值”的每个元素
:v
- 如果
包含键mydict
,v
- 检查
处的列表是否包含mydict[v]
键
- 如果没有,则将元素
添加到v
新列表中
- 如果是,请跳过添加
v
- 检查
- 将
设置为新创建的mydict[key]
new\u列表
- 迭代“值”的每个元素
mydict
上运行此算法的代码后,我得到:
{'apple': ['nutmeg', 'cinnamon'], 'mint': ['apple', 'orange', 'banana']}
下面的代码解决了这个问题。如果有人想通过做一行漂亮的单行来炫耀自己,请随意:)
欢迎来到堆栈溢出!这不是一个人们为你编写代码的网站,这样你就不必这么做。如果您需要帮助调试您编写的代码,您必须发布一个日志并解释代码的具体问题。使用
(键,值)
迭代dict.items()
,并检查dict[key]中的每个值是否存在另一个(值,键)
。如果是这样,请从其中一个上拆下该对。另外,为了快速操作,我建议您使用设置
值进行细化。您可以稍后将其转换为列表或保留为设置,如果它适合您。感谢提示!
{'apple': ['nutmeg', 'cinnamon'], 'mint': ['apple', 'orange', 'banana']}
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