我正在使用tcdb
來保存一個大的鍵值存儲。鍵是表示用戶ID的字符串,值的形式python:在東京內閣商店增加值
{'coord':0,'node':0,'way':0,'relation':0}
該店在具有座標,節點,方式和關係的對象的數據文件填充迭代中,每個連接到一個特定的用戶的類型的字典。這是我的代碼遞增字段:
def increment(self,uid,typ):
uid = str(uid)
type = str(typ)
try:
self.cache[uid][typ] += 1
except KeyError:
try:
self.cache[uid][typ] = 1
except KeyError:
try:
print 'creating record for %s' % uid
self.cache[uid] = {'coord':0,'node':0,'way':0,'relation':0}
except KeyError:
print 'something\'s messed up'
這是行不通的。我結束了與具有全零個值的表:
def result(self):
print 'cache is now %i records' % len(self.cache)
for key in self.cache:
print key + ': ' + str(self.cache[key])
產量:
...
4951: {'node': 0, 'coord': 0, 'relation': 0, 'way': 0}
409553: {'node': 0, 'coord': 0, 'relation': 0, 'way': 0}
92274: {'node': 0, 'coord': 0, 'relation': 0, 'way': 0}
259040: {'node': 0, 'coord': 0, 'relation': 0, 'way': 0}
...
爲什麼?
最後一個異常不會被調用。
編輯這段代碼在第一try
塊:
tempdict = self.cache[uid]
tempdict[typ] = tempdict.get(typ,0) + 1
self.cache[uid] = tempdict
代替了原來的
self.cache[uid][typ] += 1
作品,但看起來真的很醜我。
'coord','node','way'或'relation'。 – mvexel
我插入了輸出表格的代碼。 – mvexel
抱歉,這是從引入更多密鑰的不同版本輸出的。糾正。 – mvexel