Есть две проблемы с вашим вопросом.
Словари неупорядочены, поэтому понятие первого на самом деле не определено. Вы можете использовать KeyValuePairs
вместо.
Мне нужен последний ключ, где String = "something"
не указывает, хотите ли вы, чтобы это был единственный ключ или нет. Я предполагаю последнее.
Это должно дать вам то, что вы хотите:
let dict: KeyValuePairs<TimeInterval, [String: (amount: Double, ids: [Int64])]> = [
0: ["something": (0.0, [])],
4: ["foo": (1.0, [3])],
10: ["something": (4.0, [4,2,1])]
]
vals.first { $1["something"] != nil }?.key // => 0
vals.reversed().first { $1["something"] != nil }?.key // => 10