我希望有一个字典(或支持此功能的数据结构)可以访问两个键下的值,但是当你使用一个键.pop()值时,它也会弹出另一个项目。
.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]}
答案 0 :(得分:0)
这样的事情怎么样?
from collections import defaultdict
class MyDataStructure(defaultdict):
def mypop(self, value):
for key in self:
self[key] = [i for i in self[key] if str(i) != str(value)]
return self
class Value:
def __init__(self, v=None):
self.v = v
def __repr__(self):
return str(self.v)
list_of_words = ['barrd', 'laary', 'grrup']
words = MyDataStructure(list)
# pdb.set_trace()
for word in list_of_words:
temp_word = Value(word)
# second letter + P
words[word[1:2] + 'P'].append(temp_word)
# second last letter + S
words[word[-2:-1] + 'S'].append(temp_word)
print(words)
current = 'barrd'
words.mypop(current)
print(words)
输出:
defaultdict(<class 'list'>, {'aP': [barrd, laary], 'rS': [barrd, laary], 'rP': [grrup], 'uS': [grrup]})
defaultdict(<class 'list'>, {'aP': [laary], 'rS': [laary], 'rP': [grrup], 'uS': [grrup]})