Я новичок в Котлине и все еще пытаюсь его изучить. Я исследую эту проблему уже несколько часов и до сих пор не понял. Я хочу получить элемент из списка по его индексу. Я понял, как это сделать с помощью простого списка, вот так
val my_list = listOf(1,2,3)
println(my_list.get(0))
Вышеупомянутое работает, но когда я пытаюсь сделать это со списком, который хранится внутри карты
val my_list = mutableMapOf<String, Any>()
my_list["set1"] = listOf(1,2,3)
my_list["set2"] = listOf("A","B","C")
my_list["set3"] = listOf("d","e","f")
val sub_list = my_list["set1"]
println(sub_list.get(0))
Я получаю следующую ошибку
Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: @InlineOnly public inline operator fun <@OnlyInputTypes K, V> Map.get(key: Int): ??? defined in kotlin.collections @SinceKotlin public operator fun MatchGroupCollection.get(name: String): MatchGroup? defined in kotlin.text
Примечание: в основном я использую Python, так что это то, к чему я привык. Функциональность Python, которую я пытаюсь воспроизвести в Kotlin, - это словарь списков.





Проблема заключается в объявлении типа вашей карты, оно должно быть:
val my_list = mutableMapOf<String, List<Any>>()
Any не имеет метода get(), поэтому нет возможности его вызвать.
Даже когда эта проблема будет решена, вам, вероятно, придется иметь дело с допуском на null, как:
val sub_list = my_list["set1"]
Вернет List<Any>?, что означает, что my_list может не иметь значения для указанного ключа. В этом случае вам придется сделать что-то вроде:
sub_list?.get(0)?.run { println(it) }
Что, в свою очередь, также может вызвать исключение, если sub_list пуст. Это можно решить с помощью чего-то большего:
vsub_list?.firstOrNull()?.run { println(it) }