Как определить, есть ли в словаре ключ?

Я хочу ввести словарь, но Джулия выдает исключение, если ключ не существует. Чтобы избежать исключения, я сначала должен проверить, существует ли ключ в словаре.

Сейчас я использую эту настраиваемую функцию:

function has_some_key(dict, key)
   for (k, v) in dict
       if k == key
           return true
       end
   end
   return false
end

Есть ли лучший способ определить, есть ли в словаре отображение для данного ключа?


person David Varela    schedule 10.01.2020    source источник


Ответы (2)


haskey проверит, есть ли в некоторой коллекции сопоставление для данного ключ:

julia> d
Dict{Int64,String} with 2 entries:
  2 => "two"
  1 => "one"

julia> haskey(d, 1)
true

julia> haskey(d, 3)
false
person David Varela    schedule 10.01.2020
comment
вы также можете использовать 2 in keys(d) - person 张实唯; 10.01.2020

Другой способ, который может быть жизнеспособным в зависимости от вашего варианта использования, - использовать get для предоставления значения по умолчанию в случае, если ключ отсутствует:

julia> d = Dict(1 => "one", 2 => "two")
Dict{Int64,String} with 2 entries:
  2 => "two"
  1 => "one"

julia> get(d, 1, "zero")
"one"

julia> get(d, 3, "zero")
"zero"

Также есть get!, который также сохранит значение по умолчанию для запрошенного ключа.

person phipsgabler    schedule 10.01.2020