質問編集履歴

4

コード

2017/10/16 05:29

投稿

aaa12
aaa12

スコア18

test CHANGED
File without changes
test CHANGED
@@ -8,51 +8,51 @@
8
8
 
9
9
 
10
10
 
11
- ```python 
11
+ > ```python 
12
12
 
13
- with open('file1.txt') as f:
13
+ > with open('file1.txt') as f:
14
14
 
15
- value_list = [line.rstrip() for line in f]
15
+ > value_list = [line.rstrip() for line in f]
16
16
 
17
+ >
17
18
 
19
+ > with open('file2.txt') as f:
18
20
 
19
- with open('file2.txt') as f:
21
+ > key_list = [line.rstrip() for line in f]
20
22
 
21
- key_list = [line.rstrip() for line in f]
23
+ > data_dict = {}
22
24
 
23
- data_dict = {}
25
+ > for raw_value in value_list:
24
26
 
25
- for raw_value in value_list:
27
+ > key, value = raw_value.split(';')
26
28
 
27
- key, value = raw_value.split(';')
29
+ > if key in data_dict:
28
30
 
29
- if key in data_dict:
31
+ > data_dict[key].append(value)
30
32
 
31
- data_dict[key].append(value)
33
+ > else:
32
34
 
33
- else:
35
+ > data_dict[key] = [value]
34
36
 
35
- data_dict[key] = [value]
37
+ >
36
38
 
39
+ > for key, values in sorted(data_dict.items(), key=lambda x: -len(x[1])):
37
40
 
41
+ > for value in values:
38
42
 
39
- for key, values in sorted(data_dict.items(), key=lambda x: -len(x[1])):
43
+ > print(key + ';' + value)
40
44
 
41
- for value in values:
45
+ >
42
46
 
43
- print(key + ';' + value)
47
+ > if len(values) == 0:
44
48
 
49
+ > pass
45
50
 
51
+ > else:
46
52
 
47
- if len(values) == 0:
53
+ > print(len(values))
48
54
 
49
- pass
50
-
51
- else:
52
-
53
- print(len(values))
54
-
55
- ```
55
+ > ```
56
56
 
57
57
  以上です。表記の仕方がわかりにくかったらおっしゃってください。
58
58
 

3

質問の編集

2017/10/16 05:29

投稿

aaa12
aaa12

スコア18

test CHANGED
@@ -1 +1 @@
1
- python ランキング
1
+ python ランキング 書き込み
test CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
 
4
4
 
5
+ > https://teratail.com/questions/96246
6
+
5
- 元となるコードはこちらですpython
7
+ > 前回質問し、教えていただいた内容です。コードも教えていただきました
6
8
 
7
9
 
8
10
 
9
- コード
11
+ ```python 
10
12
 
11
13
  with open('file1.txt') as f:
12
14
 
@@ -18,29 +20,39 @@
18
20
 
19
21
  key_list = [line.rstrip() for line in f]
20
22
 
23
+ data_dict = {}
24
+
25
+ for raw_value in value_list:
26
+
27
+ key, value = raw_value.split(';')
28
+
29
+ if key in data_dict:
30
+
31
+ data_dict[key].append(value)
32
+
33
+ else:
34
+
35
+ data_dict[key] = [value]
21
36
 
22
37
 
23
- for key in key_list:
24
38
 
25
- count = 0
39
+ for key, values in sorted(data_dict.items(), key=lambda x: -len(x[1])):
26
40
 
27
- for value in value_list:
41
+ for value in values:
28
42
 
29
- if key == value.split(';')[0]:
43
+ print(key + ';' + value)
30
-
31
- print(value)
32
-
33
- count += 1
34
-
35
- else:
36
-
37
- print(count)
38
-
39
- value_list = value_list[count:]
40
-
41
- break
42
44
 
43
45
 
46
+
47
+ if len(values) == 0:
48
+
49
+ pass
50
+
51
+ else:
52
+
53
+ print(len(values))
54
+
55
+ ```
44
56
 
45
57
  以上です。表記の仕方がわかりにくかったらおっしゃってください。
46
58
 
@@ -68,9 +80,9 @@
68
80
 
69
81
 
70
82
 
71
- 望む結果としては、
83
+ 結果としては、
72
84
 
73
- ファイル1の;より左の数値とファイル2が合致した時のみを考え、合致した場合はファイル1にその数字を含む行がいくつあるのかを数え上位からランク付けしたいです。そしてそれを別のファイルへと保存したいと思っています。
85
+ ファイル1の;より左の数値とファイル2が合致した時のみを考え、合致した場合はファイル1にその数字を含む行がいくつあるのかを数え上位からランク付けします。
74
86
 
75
87
  例としては、以下のようです。
76
88
 
@@ -86,46 +98,78 @@
86
98
 
87
99
  1
88
100
 
101
+
102
+
103
+ このように解決、編集していただきました。そのコードに手を加えさせていただき、新しくコードを書きました。(このコードの結果を別のファイルへ保存する方法しようと思い書きました。)
104
+
89
- (できたら0ものは表示させくな
105
+ 新しく、ファイルを作りそこに上記結果を保存したいです。
106
+
107
+ 下記のようなコードを書きましたが、最後のf3.write(str1)のところで通りません。(f3.writeは2回しようしてはいけないなどの決まりがありますか?)初心者なので、ヘンテコな編集になっているかもしれません。ご指摘よろしくお願いします。
90
108
 
91
109
 
92
110
 
93
- わかる方がいらっしゃりましたらよろしくお願いします。
111
+
94
112
 
95
113
 
96
114
 
97
115
  ```python
98
116
 
99
- with open('file1.txt') as f:
117
+ with open('ファイル1.txt') as f:
100
118
 
101
119
  value_list = [line.rstrip() for line in f]
102
120
 
103
121
 
104
122
 
105
- with open('file2.txt') as f:
123
+ with open('ファイル2.txt') as f:
106
124
 
107
125
  key_list = [line.rstrip() for line in f]
108
126
 
109
127
 
110
128
 
111
- for key in key_list:
129
+ f3 = open('ファイル3.txt', 'w')
112
130
 
113
- count = 0
114
131
 
115
- for value in value_list:
116
132
 
117
- if key == value.split(';')[0]:
133
+ data_dict = {}
118
134
 
119
- print(value)
135
+ for raw_value in value_list:
120
136
 
121
- count += 1
137
+ key, value = raw_value.split(';')
122
138
 
123
- else:
139
+ if key in data_dict:
124
140
 
125
- print(count)
141
+ data_dict[key].append(value)
126
142
 
127
- value_list = value_list[count:]
143
+ else:
128
144
 
145
+ data_dict[key] = [value]
146
+
147
+
148
+
149
+ for key, values in sorted(data_dict.items(), key=lambda x: -len(x[1])):
150
+
151
+ for value in values:
152
+
153
+ print(key + ';' + value)
154
+
155
+ f3.write(key + ';' + value + '\n')
156
+
157
+
158
+
159
+ if len(values) == 0:
160
+
161
+ pass
162
+
129
- break
163
+ else:
164
+
165
+ print(len(values))
166
+
167
+ str1 = len(values)
168
+
169
+ f3.write(str1)
170
+
171
+ f.close()
172
+
173
+
130
174
 
131
175
  ```

2

ソースコード

2017/10/16 05:16

投稿

aaa12
aaa12

スコア18

test CHANGED
File without changes
test CHANGED
@@ -91,3 +91,41 @@
91
91
 
92
92
 
93
93
  わかる方がいらっしゃりましたらよろしくお願いします。
94
+
95
+
96
+
97
+ ```python
98
+
99
+ with open('file1.txt') as f:
100
+
101
+ value_list = [line.rstrip() for line in f]
102
+
103
+
104
+
105
+ with open('file2.txt') as f:
106
+
107
+ key_list = [line.rstrip() for line in f]
108
+
109
+
110
+
111
+ for key in key_list:
112
+
113
+ count = 0
114
+
115
+ for value in value_list:
116
+
117
+ if key == value.split(';')[0]:
118
+
119
+ print(value)
120
+
121
+ count += 1
122
+
123
+ else:
124
+
125
+ print(count)
126
+
127
+ value_list = value_list[count:]
128
+
129
+ break
130
+
131
+ ```

1

syoshinnsya

2017/10/13 15:52

投稿

aaa12
aaa12

スコア18

test CHANGED
File without changes
test CHANGED
File without changes