我的代码如下:
abcd a1
abcd a2
abcd a3
abcd b1
abcd b2
q a1
q a2
我有一个defaultdict实现,将它们放在字典中。但是,如果没有defaultdict(较旧的python),我将如何做到这一点。我的目标是有一个类似这样的字典:
abcd : 'a1','a2','a3','b1','b2'
q : 'a1', 'a2'
另外我需要计算q中元素的数量,abcd中元素的总数等等。
编辑。
答案 0 :(得分:2)
而不是true
使用defaultdict
:
setdefault()
这将导致:
x = {}
x.setdefault('abcd', []).append('a1')
x.setdefault('abcd', []).append('a2')
并尝试查找abcd: ['a1', 'a2']
作为'abcd'
的密钥,并且当不可用时,将其作为空列表(x
)启动。并返回找到的值或新实例化的列表。 []
适用于返回的值(第一次在空列表中,之后在.append()
列表中)。
我不确定这是什么时候添加但是我有2001年的代码使用a1
所以你的Python版本可能支持这个。
答案 1 :(得分:2)
您可以在__missing__
的子类上实现dict
并创建一个额外的count
方法来计算密钥的出现次数:
class DefaultDict(dict):
def __missing__(self, key):
self[key] = []
return self[key]
def count(self, key):
return len(self[key])
>>> a = DefaultDict()
>>> a['a'].append(1)
>>> a['a'].append(1)
>>> a['a'].append(1)
>>> a['a'].append(1)
>>> a['a'].append(1)
>>> a
{'a': [1, 1, 1, 1, 1]}
>>> a.count('a')
5