以下のような辞書のリストがあります。
python
1fruit_dict = [ 2 {"商品名1":'みかん', 3 "価格1":"100円", 4 "産地1":'北海道'}, 5 {"商品名2":'りんご', 6 "価格2":"200円", 7 "産地2":'沖縄'}, 8 ]
上記から以下のような辞書をそれぞれ作りたいです。
python
1name = {"商品名1":'みかん',"商品名2":'りんご'} 2price = {"価格1":'りんご'"価格2":"200円"} 3production_area = {"産地1":'北海道', "産地2":'沖縄'}
それぞれkeyが違うし、辞書はインデックス番号を指定できないしで実装に悩んでいます。
初歩的な質問で恐縮ですが回答頂けますと幸いです。
よろしくお願いします。
#追記
皆様回答ありがとうございます。
上記の例では、商品1、商品2...
と共通部分で抽出しやすい形になっていますが、例えばこれが、AAA、BBB...
のように全く共通点の無いような場合を想定していました。
質問がわかりにくくて大変申し訳ありません。
#追記2(修正)
皆さま、大変参考になるアドバイスありがとうございます。
また、色々とお手数をお掛けして申し訳ございません。
python
1fruit_dict = [ 2 {"商品名1":'みかん',"商品名1":"100円", "商品名1":'沖縄'}, 3 {"商品名2":'りんご',"商品名2":"200円","商品名2":'沖縄'}, 4]
上記のように重複するkey若くは重複する値がある場合にも下記のような辞書にまとめることはできますでしょうか?
python
1name = {"商品名1":'みかん',"商品名2":'りんご'} 2price = {"商品名1":'100円'"商品名2":"200円"} 3production_area = {"商品名1":'沖縄', "商品名2":'沖縄'}
#追加3
"産地2"は"商品名2"でした。
申し訳ありません。
修正いたしました。
アドバイスありがとうございます。
python
1fruit_dict = [ 2{"商品名1": ['みかん', '100円', '沖縄']}, 3{"商品名2": ['りんご', '200円', '沖縄']}, 4]
上記辞書を作成して、以下のように修正出来たら良いなと思います。
python
1name = {"商品名1":'みかん',"商品名2":'りんご'} 2price = {"商品名1":'100円'"商品名2":"200円"} 3production_area = {"商品名1":'沖縄', "商品名2":'沖縄'}
price = {"商品名2":'りんご'"価格2":"200円"}
となっていますが、これは、
price = {"価格1": '100円', "価格2": "200円"}
ではないでしょうか?

おっしゃる通りです。
修正いたしました。
ご指摘ありがとうございました。
> 例えばこれが、AAA、BBB... のように全く共通点の無いような場合を想定していました
全く共通点の無いキー同士をどうやって `name` や `price` に分類するのでしょうか?
key名にルールが無い場合、項目の挿入順などでしょうか?
もしくは、①価格は「~円」表記なので確定できる ②産地には地名が入っている(地名はプリセットに含まれるかの判定etc) ③前述の2つでなければ商品名
みたいに推理するとか?
また、共通点がないということは逆にたまたま重複するような文字列が入っている可能性などもないでしょうか?
例
```
{"商品名1":'みかん', "価格1":"100円", "産地1":'北海道'},
{"商品名2":'りんご', "価格2":"200円", "産地2":'沖縄'},
{"商品名称1":'ぶどう', ...
{"商品名2":'いちご', ... //←りんご と重複
{"名称3":'林檎', ...
```
> 例えばこれが、AAA、BBB...のように全く共通点の無いような場合を想定していました。
これだけだと意味不明なので、質問文に載っている商品名などの例と同じく、
「このデータを、こうしたい」と具体的に書いてください。
キーの値は無視して、順番だけ使いたいということですかね?
第1番目キーとその値の一覧 = {"AAA":'みかん',"BBB":'りんご'}
みたいな?
> 例えばなのですが、辞書のキーが被る可能性もある前提ですとどのようにするのが良いでしょうか?
そもそも何をしたいのか(このデータからこういう結果を得たいということ)が書かれていないので、
「キーか被る」など細かい話だけされてもいかんともしがたいです。
再度書きますが、
(1) 「このデータを、こうしたい」と具体的に書いてください。
(2) キーの値は無視して、順番だけ使いたいということですかね?
> 下の例はキーが被ってる場合です。
>>> {"商品名1":'みかん', "商品名1":"100円", "商品名1":'北海道'}
{'商品名1': '北海道'}
となって **そのような辞書は作れない** ので意味のない仮定です。
また開き括弧が { なのが意図したものなのか不明ですし、閉じ括弧がないので文法的にも通りません。
すでにでていますが「辞書のキーが被る可能性もある前提」などという表現よりも、質問としては、
このようなデータを入力、こういう形に加工したい
という形式が分かりやすくていいかと思います。(そもそも正しくPythonで扱えない形では駄目ですが)
> #追記2(修正)
> 上記のように重複するkey若くは重複する値がある場合にも下記のような辞書にまとめることはできますでしょうか?
実際に fruit_dict を作成して内容を確認すると以下の様になります。キーが同じなので、最後の key-value ペア(産地)のみになってしまいます。商品名と価格の情報が欠落するので、記載されている様な結果に変形することができません。
$ python3
>>> fruit_dict = [
{"商品名1":'みかん', "商品名1":"100円", "商品名1":'沖縄'},
{"商品名2":'りんご', "商品名2":"200円", "商品名2":'沖縄'},
]
>>> fruit_dict
[{'商品名1': '沖縄'}, {'商品名2': '沖縄'}]
fruit_dict を以下の様に作成する場合は、期待される結果に変形することができます。(production_area = {"商品名1":'沖縄', "産地2":'沖縄'} と書かれていますが、"産地2"は"商品名2"でしょう)
fruit_dict = [
{"商品名1": ['みかん', '100円', '沖縄']},
{"商品名2": ['りんご', '200円', '沖縄']},
]
もしくは、
fruit_dict = [
[{'商品名1': 'みかん'}, {'商品名1': '100円'}, {'商品名1': '沖縄'}],
[{'商品名2': 'りんご'}, {'商品名2': '200円'}, {'商品名2': '沖縄'}],
]

本文に追記させて頂きました。
fruit_dict = [
{"商品名1": ['みかん', '100円', '沖縄']},
{"商品名2": ['りんご', '200円', '沖縄']},
]
と記述し、これをそれぞれの辞書にまとめるのがスマートかなと思いました。
どのように行えば良いでしょうか?
お手数をお掛けして申し訳ないです。
(回答に書くつもりがコメントに書いてしまったので削除)
> と記述し、これをそれぞれの辞書にまとめるのがスマートかなと思いました。
なんと。
「入力データの形式は決まっているが、それをうまく説明できない」という状況かと思っていたのですが、
「入力データの形式は決まっておらず、どんな形式が良いかという相談」という質問だったのですか?
2024/07/10 21:28 のコメントの入力データだとして、出力データはどのようにしたいと言うことでしょうか?
書くの3度目ですが、
「このデータを、こうしたい」と具体的に書いてください。
もしかして、出力データの形式も決まっておらず、それも相談という質問なのでしょうか?

回答5件
あなたの回答
tips
プレビュー