質問編集履歴
5
上書き
title
CHANGED
File without changes
|
body
CHANGED
@@ -39,7 +39,31 @@
|
|
39
39
|
{'first': {'Aha-n': ['Aha-n Solo'], 'Aha~n': ['Aha~n Skywalker']}, 'middle': {'': ['Aha-n Solo', 'Aha~n Skywalker']}, 'last': {'Solo': ['Aha-n Solo'], 'Skywalker': ['Aha~n Skywalker']}}
|
40
40
|
['Aha~n Skywalker']
|
41
41
|
```
|
42
|
+
修正後のコード
|
43
|
+
```python
|
44
|
+
def init(data):
|
45
|
+
data['first'] = {}
|
46
|
+
data['middle'] = {}
|
47
|
+
data['last'] = {}
|
48
|
+
|
49
|
+
def lookup(data, label, name):
|
50
|
+
return data[label].get(name)
|
51
|
+
|
52
|
+
def store(data, *full_names):
|
53
|
+
for full_name in full_names:
|
54
|
+
names = full_name.split()
|
55
|
+
if len(names) == 2:
|
56
|
+
names.insert(1, '')
|
57
|
+
labels = 'first', 'middle', 'last'
|
58
|
+
for label, name in zip(labels, names):
|
59
|
+
people = lookup(data, label, name)
|
60
|
+
if people:
|
61
|
+
people.append(full_name)
|
62
|
+
else:
|
63
|
+
data[label][name] = [full_name]
|
64
|
+
```
|
42
65
|
|
66
|
+
|
43
67
|
store関数を用いて複数のデータを入れられるようにしたつもりです。
|
44
68
|
|
45
69
|
store(d, 'Han Solo') のように一つのデータであれば正しく挙動してくれるのですが
|
4
更に修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -33,6 +33,12 @@
|
|
33
33
|
print(d)
|
34
34
|
print(lookup(d, 'last', 'Skywalker'))
|
35
35
|
```
|
36
|
+
|
37
|
+
実行結果
|
38
|
+
```実行結果
|
39
|
+
{'first': {'Aha-n': ['Aha-n Solo'], 'Aha~n': ['Aha~n Skywalker']}, 'middle': {'': ['Aha-n Solo', 'Aha~n Skywalker']}, 'last': {'Solo': ['Aha-n Solo'], 'Skywalker': ['Aha~n Skywalker']}}
|
40
|
+
['Aha~n Skywalker']
|
41
|
+
```
|
36
42
|
|
37
43
|
store関数を用いて複数のデータを入れられるようにしたつもりです。
|
38
44
|
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,7 +14,8 @@
|
|
14
14
|
def store(data, *full_names):
|
15
15
|
for full_name in full_names:
|
16
16
|
names = full_name.split()
|
17
|
+
if len(names) == 2:
|
17
|
-
|
18
|
+
names.insert(1, '')
|
18
19
|
labels = 'first', 'middle', 'last'
|
19
20
|
for label, name in zip(labels, names):
|
20
21
|
people = lookup(data, label, name)
|
2
コードをテキストで表示
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,35 +2,37 @@
|
|
2
2
|
|
3
3
|
下の画像がその時書いたプログラムと実行結果です。
|
4
4
|
|
5
|
+
```python
|
5
|
-
|
6
|
+
def init(data):
|
6
|
-
|
7
|
+
data['first'] = {}
|
7
|
-
|
8
|
+
data['middle'] = {}
|
8
|
-
|
9
|
+
data['last'] = {}
|
9
|
-
|
10
|
+
|
10
|
-
|
11
|
+
def lookup(data, label, name):
|
11
|
-
|
12
|
+
return data[label].get(name)
|
12
|
-
"\n",
|
13
|
-
"def store(data, *full_names):\n",
|
14
|
-
" for full_name in full_names:\n",
|
15
|
-
" names = full_name.split()\n",
|
16
|
-
" if len(names) == 2: names.insert(1, '')\n",
|
17
|
-
" labels = 'first', 'middle', 'last'\n",
|
18
|
-
" for label, name in zip(labels, names):\n",
|
19
|
-
" people = lookup(data, label, name)\n",
|
20
|
-
" if people:\n",
|
21
|
-
" people.append(full_name)\n",
|
22
|
-
" else:\n",
|
23
|
-
" data[label][name] = [full_name]\n",
|
24
|
-
"\n",
|
25
|
-
" \n",
|
26
|
-
"\n",
|
27
|
-
"d = {}\n",
|
28
|
-
"init(d)\n",
|
29
|
-
"store(d, 'Han Solo', 'Aha-n Solo')\n",
|
30
|
-
"store(d, 'Luke Skywalker', 'Anakin Skywalker', 'Anahaimu Skywalker', 'Aha~n Skywalker')\n",
|
31
|
-
"print(d)\n",
|
32
|
-
"print(lookup(d, 'last', 'Skywalker'))"
|
33
13
|
|
14
|
+
def store(data, *full_names):
|
15
|
+
for full_name in full_names:
|
16
|
+
names = full_name.split()
|
17
|
+
if len(names) == 2: names.insert(1, '')
|
18
|
+
labels = 'first', 'middle', 'last'
|
19
|
+
for label, name in zip(labels, names):
|
20
|
+
people = lookup(data, label, name)
|
21
|
+
if people:
|
22
|
+
people.append(full_name)
|
23
|
+
else:
|
24
|
+
data[label][name] = [full_name]
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
d = {}
|
29
|
+
init(d)
|
30
|
+
store(d, 'Han Solo', 'Aha-n Solo')
|
31
|
+
store(d, 'Luke Skywalker', 'Anakin Skywalker', 'Anahaimu Skywalker', 'Aha~n Skywalker')
|
32
|
+
print(d)
|
33
|
+
print(lookup(d, 'last', 'Skywalker'))
|
34
|
+
```
|
35
|
+
|
34
36
|
store関数を用いて複数のデータを入れられるようにしたつもりです。
|
35
37
|
|
36
38
|
store(d, 'Han Solo') のように一つのデータであれば正しく挙動してくれるのですが
|
1
コードをテキストで表示
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,8 +1,36 @@
|
|
1
1
|
jupyter lab で勉強しながら遊んでたら、プログラムが思ってたのと違う挙動をし始めました
|
2
2
|
|
3
3
|
下の画像がその時書いたプログラムと実行結果です。
|
4
|
-

|
5
4
|
|
5
|
+
"def init(data):\n",
|
6
|
+
" data['first'] = {}\n",
|
7
|
+
" data['middle'] = {}\n",
|
8
|
+
" data['last'] = {}\n",
|
9
|
+
" \n",
|
10
|
+
"def lookup(data, label, name):\n",
|
11
|
+
" return data[label].get(name)\n",
|
12
|
+
"\n",
|
13
|
+
"def store(data, *full_names):\n",
|
14
|
+
" for full_name in full_names:\n",
|
15
|
+
" names = full_name.split()\n",
|
16
|
+
" if len(names) == 2: names.insert(1, '')\n",
|
17
|
+
" labels = 'first', 'middle', 'last'\n",
|
18
|
+
" for label, name in zip(labels, names):\n",
|
19
|
+
" people = lookup(data, label, name)\n",
|
20
|
+
" if people:\n",
|
21
|
+
" people.append(full_name)\n",
|
22
|
+
" else:\n",
|
23
|
+
" data[label][name] = [full_name]\n",
|
24
|
+
"\n",
|
25
|
+
" \n",
|
26
|
+
"\n",
|
27
|
+
"d = {}\n",
|
28
|
+
"init(d)\n",
|
29
|
+
"store(d, 'Han Solo', 'Aha-n Solo')\n",
|
30
|
+
"store(d, 'Luke Skywalker', 'Anakin Skywalker', 'Anahaimu Skywalker', 'Aha~n Skywalker')\n",
|
31
|
+
"print(d)\n",
|
32
|
+
"print(lookup(d, 'last', 'Skywalker'))"
|
33
|
+
|
6
34
|
store関数を用いて複数のデータを入れられるようにしたつもりです。
|
7
35
|
|
8
36
|
store(d, 'Han Solo') のように一つのデータであれば正しく挙動してくれるのですが
|