🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Swift

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

Q&A

1回答

1002閲覧

【swift】 辞書型要素で同じkey同士の加算

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

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

0グッド

0クリップ

投稿2021/01/31 17:29

編集2021/02/01 03:01

言語 
swift

やりたいこと

辞書型の要素を同じキー同士の値を加算していきたいです。

例) ["A":2,"A":3,"B":1,"C":1]
同じキーの要素どうしでvalueを加算
["A":5,"B":1,"C":1]

どのような方法がいいのでしょうか。
調べてみましたが、解決することができませんでした。
ご回答よろしくお願いいたします。

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

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

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

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

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

miyabi_takatsuk

2021/01/31 18:36 編集

どう調べたのでしょうか? 検索キーワードなどや、出てきた記事のURLなどを記載ください。 また、今記載いただいているものは、カンマ区切りになっていますが、 配列の中に辞書型のデータが入っているのでしょうか? (要は、そのデータの型がわからなければ回答しようがない)
TsukubaDepot

2021/01/31 19:28

辞書のデータが ["A":2 , "A":3, "B":1, "C":1] だったとして(表現方法が違うことに気をつけてください)、 計算結果は ["A":5 , "A":3, "B":1, "C":1] としたいのでしょうか、それとも ["A":5, "B":1, "C":1] の間違いでしょうか。 あとは、miyabi_takatsukさんと同じ意見です。
退会済みユーザー

退会済みユーザー

2021/02/01 03:02

すみません、修正しました。 ["A":5, "B":1, "C":1] という結果にしたいです。
TsukubaDepot

2021/02/01 03:22

修正後にご提示いただいた元データの ["A":2,"A":3,"B":1,"C":1] ですが、これは文法的にエラーを含む(実行時エラーとなりうる)データとなりますが、それはご確認いただいていますでしょうか。 辞書(Dictionary)の初期登録時には同じキーを使うことはできませんので、ご自身の環境でご確認いただき、正しい元データをご提示いただけますでしょうか。
退会済みユーザー

退会済みユーザー

2021/02/01 03:38 編集

すみません、もう一度お願い致します。 同じキーだとエラーが出るということを確認していませんでした。 辞書型でというよりは、下記の結果になってほしいのです。 A 2 B 1 A 3 C 1 このように入力されたものを同じアルファベット同士で加算したいと考えています。 そして、 A 5 B 1 C 1 と、出力したいです。 よろしくお願い致します。
miyabi_takatsuk

2021/02/01 03:57

> このように入力されたものを同じアルファベット同士で加算したいと考えています。 入力、とはどういうことでしょうか? ユーザーが入力した文字列を、辞書型に起こすという要件でしょうか? それだとまるで話が変わってきますが・・・。 変換前のソースコードを記載していただかないと回答できないと思われます。
TsukubaDepot

2021/02/01 04:17

これは何かの題材なのでしょうか(題材をもとに質問していることを責めているわけではありません)。 miyabi_takatsukさんもおっしゃっているように「入力」がどのように与えられているかによって処理方法が全く異なってきます。 なんとなく、Paizaのごく初歩的な入出力問題に関する設問のような気もしますが。 問題に対する自己解釈はまったく構わないのですが、「何をみて」あるいは「与えられた課題はこういう内容で」という前提を記載して頂かないことには回答もできませんので、その点はよく考えてご投稿ください。
guest

回答1

0

質問者さん自身がよく分かってないみたいなので適当にそれっぽいものを書いておきます。
得られる結果のここがこう違うとかを言っていただければ合わせます。

swift

1// baseにotherを"たす" 2func add(base: [String: Int], other: [String: Int]) -> [String: Int] { 3 var newBase = base 4 5 other 6 .keys 7 .forEach { key in 8 newBase[key] = newBase[key, default: 0] + other[key]! 9 } 10 11 return newBase 12} 13 14 15let base = ["A":2, "B":1] 16let other = ["A":3, "C":1] 17 18print(add(base: base, other: other))

投稿2021/02/02 00:51

MasakiHori

総合スコア3391

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問