如何解决如果某个键的值不止一次,则从列表中删除该元素
dict = {'apple' : ['mint','nutmeg','cinnamon'],'mint' : ['apple','orange','banana']}
注意“apple”是一个键,它以列表作为其值,而列表包含“mint”元素。
在我的大字典中的某处“mint”也可能是一个键,它可能有一个包含元素“apple”的水果列表。因为它是字典第二个元素中的键。
问题是我想保留这对苹果和薄荷,无论哪一个是关键,但我想要一个精炼的字典,它们不会形成重复。。 >
所以想要的字典是:
dict_2 = {'apple' : ['mint','mint' : ['orange','banana']}
'mint' 列表中的 'apple' 元素已被删除,
或
dict_2 = {'apple' : ['nutmeg','banana']}
“apple”列表中的“mint”元素已被删除。
解决方法
mydict = {'apple' : ['mint','nutmeg','cinnamon'],'mint' : ['apple','orange','banana']}
由于这看起来像家庭作业,而且您还没有展示任何作业或提出具体问题,因此我将为您提供有关算法的提示,但编写代码取决于您。
你想
-
迭代字典中的每个
key,value
-
例如
key = "apple"; value = ['mint','cinnamon']
- 迭代`value 的每个元素
v
: - 如果
mydict
包含键v
,- 检查
mydict[v]
处的列表是否包含key
。 - 如果没有,则将元素
v
添加到new_list
- 如果是,请跳过添加
v
- 检查
- 将
mydict[key]
设置为新创建的new_list
- 迭代`value 的每个元素
将其转换为代码非常简单,您甚至可以将其编写为很酷的两行代码。如果您遇到问题并有具体问题,请随时提出!
在 mydict
上运行此算法的代码后,我得到:
{'apple': ['nutmeg','mint': ['apple','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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。