Другим возможным решением является реализация подкласса dict
, который содержит оригинальный словарь и отслеживает его обратную версию. Сохранение двух отдельных dicts может быть полезно, если клавиши и значения перекрываются.
class TwoWayDict(dict):
def __init__(self, my_dict):
dict.__init__(self, my_dict)
self.rev_dict = {v : k for k,v in my_dict.iteritems()}
def __setitem__(self, key, value):
dict.__setitem__(self, key, value)
self.rev_dict.__setitem__(value, key)
def pop(self, key):
self.rev_dict.pop(self[key])
dict.pop(self, key)
# The above is just an idea other methods
# should also be overridden.
Пример:
>>> d = {'a' : 1, 'b' : 2} # suppose we need to use d and its reversed version
>>> twd = TwoWayDict(d) # create a two-way dict
>>> twd
{'a': 1, 'b': 2}
>>> twd.rev_dict
{1: 'a', 2: 'b'}
>>> twd['a']
1
>>> twd.rev_dict[2]
'b'
>>> twd['c'] = 3 # we add to twd and reversed version also changes
>>> twd
{'a': 1, 'c': 3, 'b': 2}
>>> twd.rev_dict
{1: 'a', 2: 'b', 3: 'c'}
>>> twd.pop('a') # we pop elements from twd and reversed version changes
>>> twd
{'c': 3, 'b': 2}
>>> twd.rev_dict
{2: 'b', 3: 'c'}
Скорее всего, он пытается загрузить данные во временную папку / tmp. Я предполагаю, что настройки по умолчанию (обычно половина вашей оперативной памяти) слишком малы для обработки загрузки.
Вы можете отключить монтирование tmp
с помощью следующей команды: systemctl mask tmp.mount
. Будьте внимательны и сделайте свое исследование, прежде чем делать это.
В качестве альтернативы вы можете установить каталог TMPDIR
на /var/tmp
, выполнив следующее export TMPDIR='/var/tmp'