以前作っていただいたコードを書き直してランク付けした上で他のtxtファイルに移す作業のコードを教えていただきたいです。
https://teratail.com/questions/96246
前回質問し、教えていただいた内容です。コードも教えていただきました。
python
1with open('file1.txt') as f: 2 value_list = [line.rstrip() for line in f] 3 4with open('file2.txt') as f: 5 key_list = [line.rstrip() for line in f] 6data_dict = {} 7for raw_value in value_list: 8 key, value = raw_value.split(';') 9 if key in data_dict: 10 data_dict[key].append(value) 11 else: 12 data_dict[key] = [value] 13 14for key, values in sorted(data_dict.items(), key=lambda x: -len(x[1])): 15 for value in values: 16 print(key + ';' + value) 17 18 if len(values) == 0: 19 pass 20 else: 21 print(len(values))
以上です。表記の仕方がわかりにくかったらおっしゃってください。
今、ファイル1にはソートされた下記のようなデータが100万近くあります。
1234567;7890984
1234567;8764589
1234567;9275785
1345678;9868465
2345678;8979894
2345678;9078990
またファイル2にはソートされた下記のようなデータが30万近くあります。
1234567
1345678
2347889
結果としては、
ファイル1の;より左の数値とファイル2が合致した時のみを考え、合致した場合はファイル1にその数字を含む行がいくつあるのかを数え上位からランク付けします。
例としては、以下のようです。
1234567;7890984
1234567;8764589
1234567;9275785
3
1345678;9868465
1
このように解決、編集していただきました。そのコードに手を加えさせていただき、新しくコードを書きました。(このコードの結果を別のファイルへ保存する方法しようと思い書きました。)
新しく、ファイルを作りそこに上記の結果を保存したいです。
下記のようなコードを書きましたが、最後のf3.write(str1)のところで通りません。(f3.writeは2回しようしてはいけないなどの決まりがありますか?)初心者なので、ヘンテコな編集になっているかもしれません。ご指摘よろしくお願いします。
python
1with open('ファイル1.txt') as f: 2 value_list = [line.rstrip() for line in f] 3 4with open('ファイル2.txt') as f: 5 key_list = [line.rstrip() for line in f] 6 7f3 = open('ファイル3.txt', 'w') 8 9data_dict = {} 10for raw_value in value_list: 11 key, value = raw_value.split(';') 12 if key in data_dict: 13 data_dict[key].append(value) 14 else: 15 data_dict[key] = [value] 16 17for key, values in sorted(data_dict.items(), key=lambda x: -len(x[1])): 18 for value in values: 19 print(key + ';' + value) 20 f3.write(key + ';' + value + '\n') 21 22 if len(values) == 0: 23 pass 24 else: 25 print(len(values)) 26 str1 = len(values) 27 f3.write(str1) 28f.close() 29
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/14 02:49 編集
2017/10/14 04:41
2017/10/16 04:18
2017/10/16 04:26
2017/10/16 04:31
2017/10/16 04:56
2017/10/16 05:17
2017/10/16 05:28 編集
2017/10/16 05:28
2017/10/16 05:31
2017/10/16 05:46
2017/10/16 05:58
2017/10/16 06:08
2017/10/16 06:08
2017/10/16 06:11
2017/10/16 06:19
2017/10/16 06:21
2017/10/16 06:27
2017/10/16 06:38
2017/10/16 06:44
2017/10/16 06:45
2017/10/16 07:22
2017/10/16 07:26
2017/10/16 07:33
2017/10/16 07:36
2017/10/16 07:39