Python学習入門(11)——ソート
8880 ワード
Pythonの内蔵dictionaryデータ型は無秩序であり,keyにより対応するvalueを取得する.しかし、dictionaryのitemをソート出力する必要がある場合があります.keyに基づいてもvalueに基づいても並べ替えられます.
例:
pythonにsorted関数を内蔵するヘルプドキュメント:sorted(...)sorted(iterable,cmp=None,key=None,reverse=False)-->new sorted listは、dictionaryをソートする方法をいくつか見ていますが、実際には、dictionaryの要素を分離してリストに入れ、listをソートし、dictionaryのソートを間接的に実現するという核心思想があります.この「要素」はkey,valueまたはitemであってもよい.
Listフィールドソート
pythonのソート関数sort,sortedのリストソートと辞書ソートにおける応用詳細と例
pythonリストリストには、リストのソートに使用できる便利なソート関数sort,sortedが内蔵されています.以下は例です.
最後の行、配列のフィールドのソート
参考推奨事項:
python dict sortedソート
Pythonでdictの詳細
例:
#/usr/bin/python
#
# it-homer in 2013
def test_sort():
d = {"a":"it", "b":"homer", "c":"sunboy", "d":2050}
print(d) # {'a': 'it', 'c': 'sunboy', 'b': 'homer', 'd': 2050}
d['h'] = "ithomer"
print(d) # {'a': 'it', 'h': 'ithomer', 'c': 'sunboy', 'b': 'homer', 'd': 2050}
del(d['h'])
print(d) # {'a': 'it', 'c': 'sunboy', 'b': 'homer', 'd': 2050}
#
for k in d:
print "dict[%s] = " % k, d[k]
#
for k in d:
print("dict[%s] = %s" % (k, d[k]))
# items()
for k,v in d.items():
print("dict[%s] = %s" % (k, v))
# iteritems()
for k,v in d.iteritems():
print("dict[%s] = %s" % (k, v))
# zip()
for k,v in zip(d.iterkeys(), d.itervalues()):
print("dict[%s] = %s" % (k, v))
# d.keys()
for k in d.keys():
print("dict[%s] = %s" % (k, d[k]))
'''
dict[a] = it
dict[c] = sunboy
dict[b] = homer
dict[d] = 2050
'''
def test_sort2():
d = {"a":("it","homer"), "b":{"e":"blog", "f":"forum"}, "c":["sun", "boy", 2050]}
print(d) # {'a': ('it', 'homer'), 'c': ['sun', 'boy', 2050], 'b': {'e': 'blog', 'f': 'forum'}}
print(d['a']) # ('it', 'homer')
print(d['a'][0]) # it
print(d['b']) # {'e': 'blog', 'f': 'forum'}
print(d['b']['e']) # blog
print(d['c']) # ['sun', 'boy', 2050]
print(d['c'][1]) # boy
d2 = d['b']
for k in d2:
print("%s : %s" % (k, d2[k])) # e : blog "
" f : forum
#
d = {"a":"it", "b":"homer"}
f = {"a":"blog", "c":"forum"}
d.update(f)
print d # {'a': 'blog', 'c': 'forum', 'b': 'homer'}
d = {}
d.setdefault("a")
print d # {'a': None}
d.setdefault("b", 0)
print d # {'a': None, 'b': 0}
import copy
def test_sort3():
d = {"a":"it", "b":"homer", "c":"blog", "d":"forum"}
#
f = d.copy()
print f # {'a': 'it', 'c': 'blog', 'b': 'homer', 'd': 'forum'}
#
d = {"a":"it", "b":"homer", "x":{"c":"blog", "d":"forum"}}
print d # {'a': 'it', 'x': {'c': 'blog', 'd': 'forum'}, 'b': 'homer'}
f = d.copy()
print f # {'a': 'it', 'x': {'c': 'blog', 'd': 'forum'}, 'b': 'homer'}
d['x']['c'] = 'change'
print d # {'a': 'it', 'x': {'c': 'change', 'd': 'forum'}, 'b': 'homer'}
print f # {'a': 'it', 'x': {'c': 'change', 'd': 'forum'}, 'b': 'homer'}
#
d = {"a":"it", "b":"homer", "x":{"c":"blog", "d":"forum"}}
print d # {'a': 'it', 'x': {'c': 'blog', 'd': 'forum'}, 'b': 'homer'}
f = copy.deepcopy(d)
print f # {'a': 'it', 'x': {'c': 'blog', 'd': 'forum'}, 'b': 'homer'}
d['x']['c'] = 'change'
print d # {'a': 'it', 'x': {'c': 'change', 'd': 'forum'}, 'b': 'homer'}
print f # {'a': 'it', 'x': {'c': 'blog', 'd': 'forum'}, 'b': 'homer'}
def test_sort4():
d = {"a":1, "c":7, "e":5, "d":9, "b":3}
print d # {'a': 1, 'c': 7, 'b': 3, 'e': 5, 'd': 9}
# key
for k, v in sorted(d.items(), key=lambda x:x[0]):
print(k,v) # ('a', 1) ('b', 3) ('c', 7) ('d', 9) ('e', 5)
# key
for k in sorted(d.keys()):
print(k,d[k]) # ('a', 1) ('b', 3) ('c', 7) ('d', 9) ('e', 5)
# key
l = list(d.keys())
l.sort()
for k in l:
print(k,d[k]) # ('a', 1) ('b', 3) ('c', 7) ('d', 9) ('e', 5)
# value
for k, v in sorted(d.items(), key=lambda x:x[1]):
print(k,v) # ('a', 1) ('b', 3) ('e', 5) ('c', 7) ('d', 9)
# value
for k, v in sorted(d.items(), key=lambda x:x[1], reverse = True):
print(k,v) # ('d', 9) ('c', 7) ('e', 5) ('b', 3) ('a', 1)
# value
for k, v in sorted(d.items(), lambda x, y: cmp(x[1], y[1]), reverse = True):
print(k,v) # ('d', 9) ('c', 7) ('e', 5) ('b', 3) ('a', 1)
if __name__ == "__main__":
test_sort()
test_sort2()
test_sort3()
test_sort4()
pythonにsorted関数を内蔵するヘルプドキュメント:sorted(...)sorted(iterable,cmp=None,key=None,reverse=False)-->new sorted listは、dictionaryをソートする方法をいくつか見ていますが、実際には、dictionaryの要素を分離してリストに入れ、listをソートし、dictionaryのソートを間接的に実現するという核心思想があります.この「要素」はkey,valueまたはitemであってもよい.
Listフィールドソート
pythonのソート関数sort,sortedのリストソートと辞書ソートにおける応用詳細と例
pythonリストリストには、リストのソートに使用できる便利なソート関数sort,sortedが内蔵されています.以下は例です.
a = [5,2,1,9,6]
>>> sorted(a) # a , a
[1, 2, 5, 6, 9]
>>> sorted(a,reverse = True) # a , a
[9, 6, 5, 2, 1]
>>> a.sort() # a , a
>>> a
[1, 2, 5, 6, 9]
>>> a.sort(reverse = True) # a , a
>>> a
[9, 6, 5, 2, 1]
,a.sort() ,b = a.sort() !
>>> b = ['aa','BB','bb','zz','CC']
>>> sorted(b)
['BB', 'CC', 'aa', 'bb', 'zz'] # ascii , , sorted(b,reverse=True)
>>> c =['CCC', 'bb', 'ffff', 'z']
>>> sorted(c,key=len) #
['z', 'bb', 'CCC', 'ffff']
>>> d =['CCC', 'bb', 'ffff', 'z']
>>> sorted(d,key = str.lower ) # , ascii
['bb', 'CCC', 'ffff', 'z']
>>> def lastchar(s):
return s[-1]
>>> e = ['abc','b','AAz','ef']
>>> sorted(e,key = lastchar) # ,lastchar , e
['b', 'abc', 'ef', 'AAz'] #sorted(e,key=lastchar) e ascii
>>> f = [{'name':'abc','age':20},{'name':'def','age':30},{'name':'ghi','age':25}] #
>>> def age(s):
return s['age']
>>> ff = sorted(f,key = age) # f age
[{'age': 20, 'name': 'abc'}, {'age': 25, 'name': 'ghi'}, {'age': 30, 'name': 'def'}]
>>> f2 = sorted(f,key = lambda x:x['age']) # , lambda ,
最後の行、配列のフィールドのソート
参考推奨事項:
python dict sortedソート
Pythonでdictの詳細