Давайте разберем написанное вами утверждение, чтобы понять, что оно на самом деле делает.
self.assertTrue(
len(list(map(type, (dictionary[key] for key in dictionary)))) is 1 #
and #
list(map(type, (dictionary[key] for key in dictionary)))[0] is float
)
У вас есть два условия, которые должны выполняться для выполнения утверждения. Первый -
len(list(map(type, (dictionary[key] for key in dictionary)))) is 1
. Создается список с типом каждого значения в словаре, вычисляется его длина и проверяется, что он равен одному. Ну, этот список всегда будет иметь то же количество элементов, что и ваш словарь. Проверка того, что эта длина равна единице, не имеет ничего общего с тем, что вы спрашиваете.
Второе условие:
list(map(type, (dictionary[key] for key in dictionary)))[0] is float
Это создаст список с типом каждого значения в словарь, как и прежде, затем проверьте, что первый элемент этого списка является float. Это не обязательно означает, что все элементы в исходном словаре являются плавающими.
Используя то, что вы уже написали, простой способ проверить это получить список типов, взять первый элемент и затем проверить, что все элементы равны к первому элементу.
l = list(map(type, (dictionary[key] for key in dictionary)))
for t in l:
self.assertTrue(t==l[0])
Но есть много способов сделать тест. Вы также можете преобразовать этот список в набор и проверить, что его длина равна единице (поскольку набор будет сохранять только уникальные значения)
self.assertTrue(len(set(l)) == 1)
# or self.assertEqual(len(set(l)), 1)