質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1028閲覧

Seift 値の取得

sweden1

総合スコア59

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/10/19 03:09

編集2016/10/19 03:10

var members = ["東京":"Tokyo","大阪":"Osaka","京都":"Kyoto"]
と辞書があるときに、キーから値を取るなら
let name = members["東京"]
print(name!)

となりますが、逆に値からキーを取得するにはどうしたら良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

何かあったような気がしたのですが無さそうなので、ループ回して調べるしかなさそうです。

swift

1var members: Dictionary = ["東京":"Tokyo", "大阪":"Osaka", "京都":"Kyoto", "京都市":"Kyoto"] 2let array = members.filter { $1 == "Kyoto" }.map{ $0.0 } 3print(array) 4=> ["京都", "京都市"]

swift

1var members: Dictionary = ["東京":"Tokyo", "大阪":"Osaka", "京都":"Kyoto"] 2let array = members.filter { $1 == "London" }.map{ $0.0 } 3print(array) 4=> []

投稿2016/10/19 04:06

編集2016/10/19 04:06
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sweden1

2016/10/19 08:49

やはりループしかなさそうですね ご回答ありがとうございました
guest

0

辞書の構文として直接求める方法はないと思うので、例えば

Swift

1let key = members.first(where: { $0.value == "Tokyo" })?.key!

などとして取り出してみてはどうでしょうか。
なお、? や !があることからわかるように、値が存在しない時の対策を取る必要があります。
また、同じ値が複数存在する可能性があるのであれば、.first()ではなく.filter()を使って対策する必要があります。

投稿2016/10/19 03:58

AOKINAO

総合スコア268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sweden1

2016/10/19 08:50

ご回答ありがとうございました
sweden1

2016/10/19 08:52

この文を見るとSQLを連想するのですが、データに格納してから取り出すという手段でしょうか?
AOKINAO

2016/10/20 00:03 編集

 そうですね。.first(where:) で該当するデータを取得してから、キーを取り出すという方法です。辞書は、ハッシュ化可能なキーを使うことで簡単にキーを検索できますが、値のほうはキーに結びついていることが前提なので、一つ一つ探すしかないと思います。  ちなみに、.first(where:)はSwift3からなので、Swift2では、.filter().firstになります。
sweden1

2016/10/20 09:28

なるほどですね ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問