
スミマセン、書いています言語はpythonですが
pythonご存じないかたでも、アルゴリズム?の
問題ですので、教えて頂きたいと思います。
いま、
あ い う A
あ い う B
あ い う C
え お A
え お C
:
:
というデータを
あ い う A・B・C
え お A・C
という具合にまとめたいと思っています。
1行あたりのデータの処理は
data = f.readline()
data_1 = data.rsplit(None,1)
として、右側から空白1つをsplitして
data_1[0] は あ い う
data_1[1] は A
と取り出せるのですけれども、
A・B・Cの作り方で悩んでいます
※
あ い う B
あ い う C
は消して
あ い う A・B・C
として残したいです

No.5ベストアンサー
- 回答日時:
No1の方の考え方通りで、辞書データとして扱えば、シンプルになるかと。
data_list = ['あ い う A', 'あ い う B', 'あ い う C', 'え お A', 'え お C']
result = dict()
for data in data_list:
data_1 = data.rsplit(None,1)
try:
result[f'{data_1[0]}'] = f'{result[data_1[0]]}・{data_1[1]}'
except KeyError:
result[f'{data_1[0]}'] = f'{data_1[1]}'
print(result)
ありがとうございます。
ちょこっと変数名を変えさせて頂きましたが
下記内容で動きましたです
input_file = 'tmp_txt.txt'
f = open(input_file, 'r', encoding='UTF-8')
data_list = f.readlines()
f.close()
result = dict()
for data in data_list:
data_1 = data.rstrip('\r\n')
data_2 = data_1.rsplit(None,1)
try:
result[f'{data_2[0]}'] = f'{result[data_2[0]]}・{data_2[1]}'
except KeyError:
result[f'{data_2[0]}'] = f'{data_2[1]}'
kekka = ''
for t, n in result.items():
kekka += t + ' ' + n + '\r\n'
print (kekka)
No.7
- 回答日時:
列の値がが同じデータは、1つのかたまりになってますか。
(連続した行になってますか。)
例えば、以下のようなケースの場合は、どうなりますか。
あ い う A
え お A
あ い う B
え お C
あ い う C
上記のような場合でも
あ い う A・B・C
え お A・C
のようにまとめたいのでしょうか。
No.6
- 回答日時:
これ、「報告書作成問題」ってやつだよね。
古典的な入力構造と出力構造のミスマッチに関する問題のひとつ。
データ行をクラスタごとにまとめてヘッダとフッタを付けるんだけど、
次のクラスタが来るまで今のクラスタが終わったかどうか判らないから、
フッタ行を作成するときに一度
次クラスタの先頭行はプッシュバックしないといけなくて
行単位のバッファリングが必要になるってやつ。
古きよきワインバーグの本なんかに解説があった。
質問のプログラムの要点はそこ。
それに比べれば、文字列をどうやってアペンドするかなんて
アルゴリズムじゃなく、ライブラリの使用法の話に過ぎない。
No.4
- 回答日時:
データが以下のようになっていた場合は、どのようにまとめるのでしょうか。
あ い う A a
あ い う B b
あ い う C c
え お D d 1
え お E e 2
No.3
- 回答日時:
あ〜、ちなみに、だ。
考え方としては#1氏の言う通りなんだけど、実はこのアルゴリズム。
基本的には「圧縮」アルゴリズムの基礎と言われている「ランレングス圧縮」と考え方は全く同じなんだ。
ランレングス圧縮(連長圧縮):
https://ja.wikipedia.org/wiki/%E9%80%A3%E9%95%B7 …
よって、アルゴリズム的に理解したい、ってのならランレングス圧縮あるいは連長圧縮で検索してみればいい。
また、事実上、Pythonのitertools.groupbyと言う関数も、結果、ランレングス圧縮と同じアルゴリズムを採用している。
itertools.groupby:
https://docs.python.org/ja/3.13/library/itertool …
No.1
- 回答日時:
こんにちは
pythonは存じませんけれど、考え方でも良いのなら・・
連想配列が使えると思いますので、keyを「あ い う」、valueを「A」として格納してゆけばすむと思われます。
value値に配列を使えるのなら、そのままpushして、最後にjoinすればよさそうです。
配列が使えない場合は、最初は「A」を格納。既にkeyが存在する場合には「・B」を追加する・・といった考え方でできるのではないでしょうか?
(最初から一律に「・A」を追加して行って、最後に先頭一文字を削除でも可能かと)
上記の処理を、行数分繰り返せばよさそうに思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プログラマー達は何故、プログラムを入れるフォルダーに容量制限があるのを知らない?
C言語・C++・C#
-
AIがプログラムする時代のプログラマー不要論の相違について
その他(プログラミング・Web制作)
-
C言語 関数、変数の宣言について
C言語・C++・C#
-
-
4
プログラミング言語のバージョン確認について。
その他(プログラミング・Web制作)
-
5
IT業で開発をされてる方々に質問なんですが、一日に書かれるコード数ってどれくらいですか? また、最近
その他(プログラミング・Web制作)
-
6
パイソンのソースコードをChatGPTで書いてもらうのを独学でやろうと思うとどういう方法がオススメで
その他(プログラミング・Web制作)
-
7
プログラミングに興味があるのですが、作りたいものはありません。 ゲーム機とかパソコンの中身(ソースコ
その他(プログラミング・Web制作)
-
8
pythonでhtmlファイルの指定文字列間を取得したいです
その他(プログラミング・Web制作)
-
9
趣味がプログラミングだと言ってもいい?
その他(プログラミング・Web制作)
-
10
数学、プログラミング、物理、化学など理系の方に質問 プログラミング言語、数式、化学式などで会話をしよ
その他(プログラミング・Web制作)
-
11
COPYコマンドで、最後に1文字「Hex1A」が付くのはなぜ?外し方は?
その他(プログラミング・Web制作)
-
12
MOVEコマンドでサブフォルダーからの移動は?
その他(プログラミング・Web制作)
-
13
visual studio 2022でのC#プログラミングのテンプレートについて
C言語・C++・C#
-
14
pythonの実行に関する質問
その他(プログラミング・Web制作)
-
15
OS入ってる機器のソフト・アプリの作成(プログラム)って
その他(プログラミング・Web制作)
-
16
秀丸エディターでの置き換え
その他(プログラミング・Web制作)
-
17
⚠️至急です!⚠️ Yahoo!知恵袋の自動回答ツールを作成しようと思ったらお金はかなりかかりますか
その他(プログラミング・Web制作)
-
18
Python 3.12.2 か一番最新のパイソンでしょうか? 2025年4月3日現在。 ChatGP
その他(プログラミング・Web制作)
-
19
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
20
数行削除してコピーするbatファイル作成
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba 正規表現について教えてく...
-
プログラム言語
-
pythonでのローカルファイルか...
-
if関数とは?
-
画像生成AIのプロンプトの作り...
-
CSVファイルの複数行削除
-
vba クリップボードクリアにつ...
-
プログラミングについて
-
今のプログラミング言語
-
自作scratch アニメの商用利用
-
OS入ってる機器のソフト・アプ...
-
Geminiフォーム 画像生成で 人...
-
pythonの実行に関する質問
-
uwscでPauseキーが押されたら、...
-
数学、プログラミング、物理、...
-
pip --versionがエラーになる
-
COPYコマンドで、最後に1文字...
-
ネットワークフォルダの中身を...
-
Python... 環境設定 初心者です...
-
パイソンのソースコードをChatG...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語
-
vba クリップボードクリアにつ...
-
プログラミングについて
-
画像生成AIのプロンプトの作り...
-
自作scratch アニメの商用利用
-
今のプログラミング言語
-
CSVファイルの複数行削除
-
Python... 環境設定 初心者です...
-
Python 3.12.2 か一番最新のパ...
-
数学、プログラミング、物理、...
-
パイソンのソースコードをChatG...
-
pythonの実行に関する質問
-
pip --versionがエラーになる
-
Geminiフォーム 画像生成で 人...
-
OS入ってる機器のソフト・アプ...
-
Google ColaboでGUI作成
-
google Colabでmatplotlibの描...
-
Webサイト内に埋め込んだmp4動...
-
初心者powershellのPS1ファイル...
-
VBAでパワーシェルを実行したい...
おすすめ情報