Нахождение разницы в диапазоне поплавков в двух словарях - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть два словаря, которые я хотел бы сравнить и найти разные значения между ними. Вот пример.

dict1={"sex":["Male","Female"],"age":[range(0,100)]}
dict2={"sex":["male","female","Male","Female"],"age":[-10,0.75,2.,2.5,3.5,30.5,0.1167,nan]}

Я знаю, что я могу найти различия между ними, делая это.

[In]: set(dict2["sex"])-set(dict1["sex"])
[Out]: {'female','male'}

Однако, когда я сравниваю возраст, я неувидеть ожидаемый результат. Я хотел бы, чтобы он возвращал только отрицательные значения и значения nan.

Я попытался создать словарь таким способом, используя numpy, но он возвращает ошибку, в которой говорится о неискажаемом типе: 'numpy.ndarray'

dict1={"sex":["Male","Female"],"age":[np.arange(0,100,0.1)]}
dict2={"sex":["male","female","Male","Female"],"age":[-10,0.75,2.,2.5,3.5,30.5,0.1167,nan]}

[In]: set(dict2["age"])-set(dict1["age"])

[Out]: TypeError: unhashable type: 'numpy.ndarray'


Мой вопрос: как я могу написать диапазон для возраста? в dict1, чтобы он мог представлять любое положительное число с плавающей точкой от 0 до 100 и возвращать только отрицательное значение и nan из dict 2? Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Измените это

dict1={"sex":["Male","Female"],"age":[np.arange(0,100,0.1)]}

на

dict1={"sex":["Male","Female"],"age":list(np.arange(0,100,0.1))}
#or simply don't put it in list as np.arange itself return an array
dict1={"sex":["Male","Female"],"age":np.arange(0,100,0.1)}

Теперь вывод:

>>> set(dict2["age"])-set(dict1["age"])
{0.75, nan, -10, 0.1167}
0 голосов
/ 07 ноября 2019

try:

set(dict2["age"][0])-set(dict1["age"])

dict2 ["age"] - это list, который состоит из одного numpy.ndarray элемента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...