... Не удалось загрузить файл или сборку «X» или одну из его зависимостей ...
blockquote>Скорее всего, он не может загрузить другую зависимость.
вы можете попробовать проверить зависимости с помощью ходячего зависимостей.
Ie: http://www.dependencywalker.com/
Также проверьте конфигурацию сборки (x86 / 64)
Редактирование: У меня также была эта проблема, когда я копировал DLL в zip из «ненадежной» сетевой папки. Файл был заблокирован Windows и было создано исключение FileNotFoundException.
См. здесь: Обнаруженные библиотеки DLL, которые из Интернета и "заблокированы" по CASPOL
Вы можете сначала проверить наиболее распространенное значение. После этого просмотрите список, чтобы увидеть, есть ли другое значение, и отследите его. Если позже вы найдете другое значение, которое отличается от самого распространенного, в списке не будет разницы.
list1 = [1,1,1,1,1,1,5,1,1,1]
def single_difference(lst):
most_common = max(set(lst), key=lst.count)
diff_idx = None
diff_val = None
for idx, i in enumerate(lst):
if i != most_common:
if diff_val is not None:
return "No unique single difference"
diff_idx = idx
diff_val = i
return (most_common, diff_val, diff_idx)
print(single_difference(list1))
Вы можете использовать что-то вроде этого:
def odd_one_out(lst):
s = set(lst)
if len(s)!=2: # see comment (1)
return False
else:
return any(lst.count(x)==1 for x in s) # see comment (2)
, которое для приведенных вами примеров дает:
print(odd_one_out(list1)) # True
print(odd_one_out(list2)) # False
print(odd_one_out(list3)) # True
Чтобы объяснить код, я бы использовал первый пример список, который вы предоставили [1,1,1,1,1,1,5,1,1,1]
.
(1) преобразование в set
удаляет все дублирующиеся значения из вашего списка, оставляя вас с {1, 5}
(в произвольном порядке). Если длина этого набора отличается от 2
, ваш список не соответствует вашим требованиям, поэтому возвращается False
(2) Если предположить, что set
имеет длину 2
, что нам нужно проверить следующее: хотя бы одно из содержащихся в нем значений появляется только один раз в оригинале list
. Это то, что делает any
.
Вы можете использовать встроенные Counter
из Типы высокопроизводительных контейнеров :
from collections import Counter
def is_single_diff(iterable):
c = Counter(iterable)
non_single_items = list(filter(lambda x: c[x] > 1, c))
return len(non_single_items) == 1
Тесты
list1 = (1,1,1,1,1,1,5,1,1,1)
list2 = (6,7,4,4,4,1,6,7,6)
list3 = (8,8,8,8,9)
In: is_single_diff (list1)
Out: True
blockquote>In: is_single_diff (list2)
Out: False
blockquote>In: is_single_diff (list3)
Out: True
blockquote> blockquote>
Используйте уникальную numpy, она даст вам всю необходимую информацию.
myarray = np.array([1,1,1,1,1,1,5,1,1,1])
vals_unique,vals_counts = np.unique(myarray,return_counts=True)