Решение на BiDict от Светослав Атанасов

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

Към профила на Светослав Атанасов

Резултати

  • 4 точки от тестове
  • 0 бонус точки
  • 4 точки общо
  • 10 успешни тест(а)
  • 6 неуспешни тест(а)

Код

"""
Грозно и неправилно работещо решение. Пускам го колкото да не са 0 точки. Целият ми проблем дойде от там, че така и не можах да разбера как речникът да се изписва директно от person (а не от person.нещоси).
"""
class BiDict(dict):
def __init__(self, dictionary):
for value in dictionary.values():
if isinstance(value, (list, dict)):
raise TypeError('Unhashable values.')
dictionary = {value:key for key, value in dictionary.items()}
for value in dictionary.values():
if isinstance(value, (list, dict)):
raise TypeError('Unhashable keys.')
dictionary = {value:key for key, value in dictionary.items()}
dict.__init__(self, dictionary)
def inverse(self):
inversed = {value:key for key, value in self.items()}
dict.__init__(self, inversed)

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

..EE...FF.F.F...
======================================================================
ERROR: test_circular_values (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1x3lm52", 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-1x3lm52", line 57, in test_copied_circular_values
    inversed_circular.inverse()
AttributeError: 'dict' object has no attribute 'inverse'

======================================================================
FAIL: test_hashing_self (__main__.BiDictTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120627-22085-1x3lm52", 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-1x3lm52", 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-1x3lm52", 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-1x3lm52", 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=2)

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

Светослав обнови решението на 19.04.2012 05:30 (преди над 12 години)

+"""
+Грозно и неправилно работещо решение. Пускам го колкото да не са 0 точки. Целият ми проблем дойде от там, че така и не можах да разбера как речникът да се изписва директно от person (а не от person.нещоси).
+"""
+
+class BiDict(dict):
+
+
+ def __init__(self, dictionary):
+
+ for value in dictionary.values():
+ if isinstance(value, (list, dict)):
+ raise TypeError('Unhashable values.')
+
+ dictionary = {value:key for key, value in dictionary.items()}
+
+ for value in dictionary.values():
+ if isinstance(value, (list, dict)):
+ raise TypeError('Unhashable keys.')
+
+ dictionary = {value:key for key, value in dictionary.items()}
+
+ dict.__init__(self, dictionary)
+
+
+ def inverse(self):
+ inversed = {value:key for key, value in self.items()}
+ dict.__init__(self, inversed)