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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

707閲覧

辞書型のデータを2列で表示したい

tkgene

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/07/22 04:32

Python 初心者で生物系のデータ解析を行っています。実際扱うファイルはもっと大きいです。
以下のようなデータ(input.txt)があり">"で始まっていない行を取得、5文字ずつで区切って、文字列の出現パターンをカウントしたいです(重複のカウント)。スクリプト自体はかけたのですが、出力の仕方で困っています。ちなみにendから1を引くのは後ろの改行も1文字とされていて、これをカウントしない方法が不明なのでとりあえず1を引いています。
自分がしたい出力は単純に1列目にキー、2列目に出現回数を表示したいです。余分な[]や:などを出力せずに表示させるにはどうしたらいいでしょうか?
most_common等を使ったり,出力前にintに変換してみたりいろいろ試したのですがわかりません。よろしくお願いします。

input.txtの中身

data1

1234567

data2

ab12345

作成したスクリプト

import pprint import collections seq = [] with open('input.txt') as file: for l in file: if '>' in l: continue x = len(l) end = x - 1 last = 5 start = 0 while last <= end: #print(l[start:last]) デバッグ用 seq.append(l[start:last]) last += 1 start += 1 counter = collections.Counter(seq) s = pprint.pformat(counter, width=20) print(s) #期待している出力 # 12345 1 # 12345 2 # 34567 1 # ab123 1 # b1234 1 #実際の出力 # Counter({'12345':2, # '23456': 1, # '34567': 1, # 'ab123': 1, # 'b1234': 1})

私自身、pythonをちゃんと理解してない節があり、説明がわかりにくいところがあり申し訳ありませんがどなたかご教授いただけると幸いです。よろしくお願いします。

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

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

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

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

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

guest

回答2

0

解決されたようですが、一応載せておきます

python

1seq = {} 2with open('input.txt') as file: 3 for l in file: 4 5 # 改行, スペースを除去 6 l = l.strip() 7 l = l[:5] 8 9 if '>' in l: 10 continue 11 if l in seq: 12 seq[l]+=1 13 else: 14 seq[l]=1 15for i in seq: 16 print(i, seq[i])

投稿2020/07/22 04:55

編集2020/07/22 04:59
Penpen7

総合スコア698

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

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

tkgene

2020/07/22 05:40

ご丁寧にありがとうございます。こんなにすっきりかけるんですね。 参考になりました。
guest

0

自己解決

for count, (key, value) in enumerate(counter.most_common(),start=1):
print(key, value)
をcounter = collections.Counter(seq)の後に追加してみました。
出力方法に関しては解決しました。

投稿2020/07/22 04:44

編集2020/07/22 04:48
tkgene

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問