如果它是一个键的值不止一次,则从列表中删除元素
Remove element from list if it's a value of a key more than once
所以,这个问题很难浓缩成标题,但这里有一个详细的解释。
我有一本大词典,其中有数千对 key-value 可能有下面的例子:
dict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}
注意“apple”是一个键,它的值是列表,列表包含“mint ' 元素。
我的大字典中的某处 'mint' 也可能是一个键,它可能有一个包含元素 'apple[=39 的水果列表=]'。因为它是字典第二个元素中的键。
问题是我想保留苹果和薄荷这对,不管哪一个是关键,但我想要一个精炼的字典,它们不会形成重复.
所以所需的字典是:
dict_2 = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['orange', 'banana']}
'mint' 列表中的 'apple' 元素已被删除,
或
dict_2 = {'apple' : ['nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}
'apple' 列表中的 'mint' 元素已被删除。
编辑:我找到了解决这个问题的办法。你可以在下面找到它
mydict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}
由于这看起来像是家庭作业,而且您没有展示任何工作或提出具体问题,我将为您提供算法提示,但编写代码由您决定。
你想要
迭代字典中的每个 key, value
例如key = "apple"; value = ['mint', 'nutmeg', 'cinnamon']
- 遍历 `value:
的每个元素 v
- 如果
mydict
包含密钥 v
,
- 检查
mydict[v]
处的列表是否包含 key
。
- 如果没有,将元素
v
添加到 new_list
- 如果是,请跳过添加
v
- 设置
mydict[key]
为新创建的new_list
将其转化为代码非常简单,您甚至可以将其编写为很酷的两行代码。如果您运行遇到问题并且有具体问题,请随时提问!
在 运行 在 mydict
上使用此算法的代码后,我得到:
{'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
所以,这个问题很难浓缩成标题,但这里有一个详细的解释。
我有一本大词典,其中有数千对 key-value 可能有下面的例子:
dict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}
注意“apple”是一个键,它的值是列表,列表包含“mint ' 元素。
我的大字典中的某处 'mint' 也可能是一个键,它可能有一个包含元素 'apple[=39 的水果列表=]'。因为它是字典第二个元素中的键。
问题是我想保留苹果和薄荷这对,不管哪一个是关键,但我想要一个精炼的字典,它们不会形成重复.
所以所需的字典是:
dict_2 = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['orange', 'banana']}
'mint' 列表中的 'apple' 元素已被删除,
或
dict_2 = {'apple' : ['nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}
'apple' 列表中的 'mint' 元素已被删除。
编辑:我找到了解决这个问题的办法。你可以在下面找到它
mydict = {'apple' : ['mint', 'nutmeg', 'cinnamon'], 'mint' : ['apple', 'orange', 'banana']}
由于这看起来像是家庭作业,而且您没有展示任何工作或提出具体问题,我将为您提供算法提示,但编写代码由您决定。
你想要
迭代字典中的每个
key, value
例如
key = "apple"; value = ['mint', 'nutmeg', 'cinnamon']
- 遍历 `value: 的每个元素
- 如果
mydict
包含密钥v
,- 检查
mydict[v]
处的列表是否包含key
。 - 如果没有,将元素
v
添加到new_list
- 如果是,请跳过添加
v
- 检查
- 设置
mydict[key]
为新创建的new_list
v
将其转化为代码非常简单,您甚至可以将其编写为很酷的两行代码。如果您运行遇到问题并且有具体问题,请随时提问!
在 运行 在 mydict
上使用此算法的代码后,我得到:
{'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