Решение на BiDict от Николай Стоицев

Обратно към всички решения

Към профила на Николай Стоицев

Резултати

  • 2 точки от тестове
  • 0 бонус точки
  • 2 точки общо
  • 5 успешни тест(а)
  • 11 неуспешни тест(а)

Код

class BiDict(dict):
def __setitem__(self, key, value):
try:
super(BiDict, self).__setitem__(key, value)
except:
super(BiDict, self).__setitem__(value, key)
def __getitem__(self, key_argument):
try:
return super(BiDict, self).__getitem__(key_argument)
except:
for key, value in self.items():
if value == key_argument:
return key

Лог от изпълнението

.EEEE..FF.F.FEEE
======================================================================
ERROR: test_assign_value_and_reverse (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 17, in test_assign_value_and_reverse
    self.person.inverse()
AttributeError: 'BiDict' object has no attribute 'inverse'

======================================================================
ERROR: test_circular_values (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 49, in test_circular_values
    circular = self.solutions.BiDict({1: 2, 2: 3, 3: 1})
AttributeError: 'BiDictTestCase' object has no attribute 'solutions'

======================================================================
ERROR: test_copied_circular_values (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 57, in test_copied_circular_values
    inversed_circular.inverse()
AttributeError: 'dict' object has no attribute 'inverse'

======================================================================
ERROR: test_double_inverse (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 21, in test_double_inverse
    self.person.inverse()
AttributeError: 'BiDict' object has no attribute 'inverse'

======================================================================
ERROR: test_inverse (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 45, in test_inverse
    self.person.inverse()
AttributeError: 'BiDict' object has no attribute 'inverse'

======================================================================
ERROR: test_lots_of_even_inverses (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 26, in test_lots_of_even_inverses
    self.person.inverse()
AttributeError: 'BiDict' object has no attribute 'inverse'

======================================================================
ERROR: test_lots_of_odd_inverses (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 35, in test_lots_of_odd_inverses
    self.person.inverse()
AttributeError: 'BiDict' object has no attribute 'inverse'

======================================================================
FAIL: test_hashing_self (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 65, in test_hashing_self
    self.assertRaises(TypeError, self.person.update, {'clone': self.person})
AssertionError: TypeError not raised by update

======================================================================
FAIL: test_insert_existing_key_with_existing_value (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 78, in test_insert_existing_key_with_existing_value
    self.assertNotIn('age', new_person.keys())
AssertionError: 'age' unexpectedly found in dict_keys(['age', 'name', 'sex'])

======================================================================
FAIL: test_insert_none_existing_key_with_existing_value (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 92, in test_insert_none_existing_key_with_existing_value
    self.assertNotIn('age', new_person.keys())
AssertionError: 'age' unexpectedly found in dict_keys(['age', 'name', 'none', 'sex'])

======================================================================
FAIL: test_invalid_value (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1osr1v1", line 62, in test_invalid_value
    self.assertRaises(TypeError, self.person.update, {'sports': ['boxing',]})
AssertionError: TypeError not raised by update

----------------------------------------------------------------------
Ran 16 tests in 0.003s

FAILED (failures=4, errors=7)

История (1 версия и 0 коментара)

Николай обнови решението на 19.04.2012 01:06 (преди почти 12 години)

+class BiDict(dict):
+
+ def __setitem__(self, key, value):
+ try:
+ super(BiDict, self).__setitem__(key, value)
+ except:
+ super(BiDict, self).__setitem__(value, key)
+
+ def __getitem__(self, key_argument):
+ try:
+ return super(BiDict, self).__getitem__(key_argument)
+ except:
+ for key, value in self.items():
+ if value == key_argument:
+ return key