☆☆ 新着記事 ☆☆

2018年10月16日火曜日

Python 配列(List, Tupple, Dictionary, Set)と要素へのアクセス

Pythonのリスト、タプル、ディクショナリ、セットについて、まとめておきます。
便利な使い方も忘れないように残しておきます、


1) リストは [ ] (角括弧)を使用します。任意の数の要素を代入でき、作成後、要素の追加や削除ができます。

2) タプルは ( ) (括弧)を使用します。任意の数の要素を代入できますが作成後、要素の追加や削除ができません。

3) ディクショナリは { } (波括弧)を使用します。任意の数の要素を代入でき、作成後、要素の追加や削除ができます。keyとvalueの2つで1つの要素という考え方で、1つのディクショナリの中で同じkeyを使用することができません。

4) セットは { } (波括弧)を使用します。任意の数の要素を代入でき、作成後、要素の追加や削除ができます。1つのセットの中で重複した要素を使用することができません。


具体例です。

Python Object -- Excelで管理する典型的表形式に対応する



1)リスト
定義:
name =["Justin", "Charlie", "Ed"]

    ◆追加
    name.append("Selena")

    ◆挿入
  name.insert(2, "Bob")
     >>> name = ['Justine', 'Ed', 'Serena']
     >>> name.insert(2, 'Bob')
     >>> name
     ['Justine', 'Ed', 'Bob', 'Serena']


*While文を使った例

fruits =['apple','orange','pineapple', 'banana', 'orange']
while fruits.count('orange'):  
*Listのcount methodは、引数に指定した値と同じ要素があれば、
 その数だけ繰り返す。
     fruits.remove('orange')

output: fruits =['apple','pineapple', 'banana']

*内包表記
number = []
for x in range(10):
    number.append(x)
print(number)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> number =[ x for x in range(10)]
>>> print(number)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


3) ディクショナリ



**Python3 では、dictionaryの順番は保持されます

*************************************************
people_string={
    "people":[
        {"name":"Wayne Rigsby",
         "phone":"123-456-789",
         "emails":["wayne@cbi.com", "wayne2@cbi.com"],
         "has_license":"true"},
        {"name":"Patric Jane",
         "phone":"987-654-321",
         "emails":"null",
         "has_license":"false"}
        ]
    }

for person in people_string[ "people"]:
    print(person)
{'name': 'Wayne Rigsby', 'phone': '123-456-789', 'emails': ['wayne@cbi.com', 'wayne2@cbi.com'], 'has_license': 'true'}
{'name': 'Patric Jane', 'phone': '987-654-321', 'emails': 'null', 'has_license': 'false'}

for person in people_string[ "people"]:
    print(person.keys())
dict_keys(['name', 'phone', 'emails', 'has_license'])
dict_keys(['name', 'phone', 'emails', 'has_license'])

for person in people_string[ "people"]:
    print(person.values())
dict_values(['Wayne Rigsby', '123-456-789', ['wayne@cbi.com', 'wayne2@cbi.com'], 'true'])
dict_values(['Patric Jane', '987-654-321', 'null', 'false'])

for person in people_string[ "people"]:
    print(person["name"])
Wayne Rigsby
Patric Jane

*************************************************
a={'name':'Freddie', 'song':'Rock you', 'year': '1977'}

要素へのアクセス

*valueには直接アクセスできないので、'key' を使ってアクセス。

print(a['name']) #Freddie
print(a['song'])   #Rock you
print(a['year'])   #1977

(Output)
print(a)                 #{'name': 'Freddie', 'song': 'Rock you', 'year': '1977'}
print(a.keys())      #dict_keys(['name', 'song', 'year'])
print(a.values())   #dict_values(['Freddie', 'Rock you', '1977'])
print(a.items())    #dict_items([('name', 'Freddie'), ('song', 'Rock you'), ('year', '1977')])

/// keyの一覧をプリントアウト
print('-------1')
for k in a.keys():
    print(k)
-------1
name
song
year

/// keyに対応するValueをプリントアウト
print('-------2')
for k in a.keys():
    print(a[k])
-------2
Freddie
Rock you
1977

print('-------3')
for v in a.values():
    print(v)  
-------3
Freddie
Rock you
1977

print('-------4')
for k, v in a.items():
    print(k, v)

-------4
name Freddie
song Rock you
year 1977

要素の追加

a['country']="U.K"

Output)
{'name': 'Freddie', 'song': 'Rock you', 'year': '1977', 'country': 'U.K'}

Keyを指定して要素の削除



*多元 Dictionary (辞書の要素にリスト)

a={'name': 'Freddie', 'song': 'Rock you', 'year': ['1977','1987','1997']}

(一気に個別の変数に代入)
a1, a2, a3 =a["year"] 
print(a1,a2,a3) #output 1977 1987 1997
b=a["year"]
print(b) #['1977', '1987', '1997']

*多元 リスト (リストの中に辞書)
a = [{'techacademy': 10}, {'online': 20}, {'programming': 30}]

print(a)             # Output : [{'techacademy': 10}, {'online': 20}, {'programming': 30}]
print(a.keys())  # Output : print(a.keys())
AttributeError: 'list' object has no attribute 'keys'
*リストの中に辞書が入ってしまうとkey functionではキーが抽出できない。


*多元 Dictionary (辞書の中に辞書)

a = { 'name' : {'First' : 'Charlie' , 'Last' : 'Puth'}, 'age' :24}

要素へのアクセス
>>> a['name']['Last']
'Puth'

要素のValueの変更
>>> a['name']['Last'] = 'Sheen'
>>> print(a)
{'name': {'First': 'Charlie', 'Last': 'Sheen'}, 'age': 24}


要素の追加
>>> a['name']['middle'] = 'Jake'
>>> a
{'name': {'First': 'Charlie', 'Last': 'Shean', 'middle': 'Jake'}, 'age': 24}

要素の削除
>>> del a['name']['middle']
>>> a
{'name': {'First': 'Charlie', 'Last': 'Shean'}, 'age': 24}

追加 (辞書同士の連結(結合))
>>> a ={'1':{'name': {'First': 'Charlie', 'Last': 'Puth'}, 'age': 24}}
>>> b ={'2':{'name': {'First': 'Ed', 'Last': 'Sheeran'}, 'age': 32}}
>>> a
{'1': {'name': {'First': 'Charlie', 'Last': 'Puth'}, 'age': 24}}
>>> b
{'2': {'name': {'First': 'Ed', 'Last': 'Sheeran'}, 'age': 32}}
>>> a.update(b)
>>> a
{'1': {'name': {'First': 'Charlie', 'Last': 'Puth'}, 'age': 24}, '2': {'name': {
'First': 'Ed', 'Last': 'Sheeran'}, 'age': 32}}

>>> a['2']['name']['Last']
'Sheeran'
>>> a['2']['age']
32


(dictionary型はappendは出来ない)
>>> a.append( { 'name' : {'First' : 'Ed' , 'Last' : 'Sheeran'}, 'age':32})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'append'

*内包表記
>>> map = { x : x**2 for x in (2,4,6)} ♯(2,4,6)は、キーとなるタプル
>>> print(map)
{2: 4, 4: 16, 6: 36}

*インデックス番号と要素を取り出す

enumerate 関数の引数を入力する辞書に items メソッドを組み合わせると、インデックス番号と値を取り出します。

>>> dict = {"tip":"orange","quiz":"orange is ?", "option":"orange1?",   "answer":"orange"}
>>> for index, value in enumerate (dict.items()):
...     print(f"{index}:{value}")
...
0:('tip', 'orange')
1:('quiz', 'orange is ?')
2:('option', 'orange1?')
3:('answer', 'orange')

*List形式のデータのインデックス番号を取得する場合は、.items()は不要。
for index, value in enumerate(data):
    print(f"{index}:{value}")


*後からDictionaryにリスト型で要素を追加
new_dict={}
new_dict["first_name"]=[]
new_dict["last_name"]=[]

new_dict["first_name"].append('Barak')
new_dict["first_name"].append('Michelle')
new_dict["last_name"].append('Obama')

print(new_dict)          #Output:{'first_name': ['Barak', 'Michelle'], 'last_name': ['Obama']}
print(new_dict["first_name"])   #Output:['Barak', 'Michelle']
print(new_dict["last_name"])   #Output:['Barak', 'Michelle']

0 件のコメント:

コメントを投稿