我希望有一个字典(或支持此功能的数据结构),可以通过两个键访问值,但是当你使用其中一个键 .pop() 弹出值时,它也会弹出另一个条目。
期望输出:('grrup' 从两个关键位置中删除)
简单示例:
- 整个字典中只能存在两个相同的项
- 这些项位于不同的列表中。列表通过键访问
- 删除这两个项必须是 O(1) 的(就像简单地使用 .pop() 一样)
from collections import defaultdict
class Value:
def __init__(self, v=None):
self.v = v
def __repr__(self):
return str(self.v)
list_of_words = ['barrd', 'laary', 'grrup']
words = defaultdict(list)
for word in list_of_words:
temp_word = Value(word)
words[word[1:2]+'P'].append(temp_word)
words[word[-2:-1]+'S'].append(temp_word)
print(words)
current = 'baard'
print(words[current[-2:-1]+'P'].pop())
print(words)
实际输出:
defaultdict(<class 'list'>, {'aP': [barrd, laary], 'rS': [barrd, laary], 'rP': [grrup], 'uS': [grrup]})
grrup
defaultdict(<class 'list'>, {'aP': [barrd, laary], 'rS': [barrd, laary], 'rP': [], 'uS': [grrup]})
期望输出:('grrup' 从两个关键位置中删除)
defaultdict(<class 'list'>, {'aP': [barrd, laary], 'rS': [barrd, laary], 'rP': [grrup], 'uS': [grrup]})
grrup
defaultdict(<class 'list'>, {'aP': [barrd, laary], 'rS': [barrd, laary], 'rP': [], 'uS': []})
简单示例:
示例代码:
d = {'a': [10, 2, 3], 'b': [2, 10]}
d.pop('b') # pop's 10 from key 'b', also removing it from 'a'
d = {'a': [2, 3], 'b': [2]}
{'a': [1, 2, 3], 'b': [2, 3]}
。如果弹出值为2
,结果是{'a': [1, 3], 'b': [3]}
还是其他什么?对于相同键的重复值,弹出它们只会删除一个实例还是所有实例?如果您在帖子中提供一些更简单的示例输入/输出,将有助于解决问题。 - Jon Clementsdata = [1, 2]; d = {'a': data, 'b': data}
... ? 这是有保证的,还是值总是应该是列表? - Jon Clementsd[a]
中删除10? - sciroccorics