В Джулии, как я узнаю, почему Dict {String, Any} - Any? - PullRequest
3 голосов
/ 18 марта 2020

Я очень новичок в Джулии и в основном код в Python в эти дни. Я использую Джулию для работы с файлами HDF5 и манипулирования ими.

Поэтому, когда я приступаю к записи (h5write), я получаю сообщение об ошибке, потому что аргумент данных имеет смешанный тип, и мне нужно выяснить, почему .

В сообщении об ошибке говорится, что Array{Dict{String,Any},4} - это то, что я пытаюсь передать, но когда я смотрю на значения (и это огромная структура), я вижу много 0xff и таких значений, как это. Как мне быстро выяснить, почему Any, а не один тип?

1 Ответ

5 голосов
/ 18 марта 2020

Просто чтобы ответить на этот вопрос:

Если my_dicts - это Array{Dict{String, Any}, 4}, то один из способов определить, какие типы скрываются в части Any, - это:

unique(typeof.(values(my_dicts[1])))

Чтобы объяснить:

  • my_dicts[1] выбирает первый элемент вашего массива, то есть один из ваших Dict{String, Any}
  • values, затем извлекает значения , которая является частью словаря Any,
  • typeof. (обратите внимание на точку) передает функцию typeof по всем элементам, возвращаемым values, возвращая типы всех этих элементов; и
  • unique берет список всех этих типов и сокращает его до своих уникальных элементов, так что в итоге вы получите список каждого отдельного типа, содержащийся в Any части вашего словаря.
...