[python入門および進級ノート]Python-基礎-辞書小結
6148 ワード
<!--
h1, h2, h3, h4, h5, h6, p, blockquote
{margin:0;
padding:0}
body
{font-family:"Helvetica Neue",Helvetica,"Hiragino Sans GB",Arial,sans-serif;
font-size:13px;
line-height:18px;
color:#737373;
background-color:white;
margin:10px 13px 10px 13px}
table
{margin:10px 0 15px 0;
border-collapse:collapse}
td, th
{border:1px solid #ddd;
padding:3px 10px}
th
{padding:5px 10px}
a
{color:#0069d6}
a:hover
{color:#0050a3;
text-decoration:none}
a img
{border:none}
p
{margin-bottom:9px}
h1, h2, h3, h4, h5, h6
{color:#404040;
line-height:36px}
h1
{margin-bottom:18px;
font-size:30px}
h2
{font-size:24px}
h3
{font-size:18px}
h4
{font-size:16px}
h5
{font-size:14px}
h6
{font-size:13px}
hr
{margin:0 0 19px;
border:0;
border-bottom:1px solid #ccc}
blockquote
{padding:13px 13px 21px 15px;
margin-bottom:18px;
font-family:georgia,serif;
font-style:italic}
blockquote:before
{content:"\201C";
font-size:40px;
margin-left:-10px;
font-family:georgia,serif;
color:#eee}
blockquote p
{font-size:14px;
font-weight:300;
line-height:18px;
margin-bottom:0;
font-style:italic}
code, pre
{font-family:Monaco,Andale Mono,Courier New,monospace}
pre
{display:block;
padding:14px;
margin:0 0 18px;
line-height:16px;
font-size:11px;
border:1px solid #d9d9d9;
white-space:pre-wrap;
word-wrap:break-word}
pre code
{background-color:#fff;
color:#737373;
font-size:11px;
padding:0}
-->
ブログ移行:新しいアドレス (直通クリック)新ブログmarkdownメンテナンスを使用し、オフラインにバージョンライブラリがあり、自分で書いたのでタイミングよく同期を更新し、同時により良いナビゲーションと読書体験csdnを提供することはmarkdownのサポートによくないので、旧版は同じステップで改訂することはありません.申し訳ありません.
-----------------------
辞書
定義#テイギ#
dictionary
1.キー値ペアの集合(map)
2.辞書は括弧「{}」で囲まれたデータセット
3.ディクショナリは無秩序であり、ディクショナリでキーを使用してメンバーにアクセスします.可変、ネスト可能、拡張などを元の場所で修正でき、新しい辞書が生成されません.
4.辞書のキーは、文字列(大文字と小文字が敏感)、数値定数またはメタグループ(可変タイプ)であり、同じ辞書のキーはタイプを混用することができる.辞書のキーはハッシュ可能でなければなりません
メタグループがキーとして使用される条件は、メタグループ内の値が可変タイプであることです.
a = (1,2) #
b = (1,2,[3,4]) #
5.辞書の値は任意のタイプで、ネストすることができ、自由に修正することができる.
宣言
辞書の作成方法:
1.基本
d = {} #
d = {'name':'tom', 'age':22}
#
d = {}
d['name'] = 'tom'
d['age'] = 22
2.dict
d = dict() #
d = dict(name='tom', age=22)
d = dict([('name','tom'), ('age',22)])
#
keys = ['name','age']
values = ['tom', 22]
d = dict(zip(keys,values))
3.fromkeys
default_を指定しないvalueならデフォルトNone
>>> dict.fromkeys(['name','age'],'default_value')
{'age': 'default_value', 'name': 'default_value'}
きほんそうさ
0.ヘルプの取得
help(dict)
1.キーが辞書に存在するか否かを判定する
if k in d: #k not in
dosomething()
2.読み取り
d = {'a':1, 'b':2}
print d['a'] # 1, , KeyError。 ,
print d.get('c', 3) # 3,get , , default_value. default_value None
missing-keyエラーを処理する3つの方法は、具体的なニーズに応じて
if k in d:
print d[k]
try:
print d[k]
except KeyError:
dosomething()
print d.get(k, default)
# d[k] if k in d else default
3.遍歴
方法1:
for key in d:
print key, d[key]
# for key in d.keys()
方法2:
for key,value in d.items():
print key, value
4.修正方法1:あるキー値ペア
d['key'] = 'newvalue'
方法2:一括追加または更新
#
d.update({'key':'newvalue'}) #
#
d.update( [ ('a',1), ('b',2) ] ) # ,(key,value)
#**key
d.update(c=3, e=4)
5.削除
del d['key']
value = d.pop('key') #
d.clear() #
6.その他:
len(d) #
d.keys() #key
d.values() #value
d.items() #(key, value)
c = d.copy() #
# ,
d.iterkeys()
d.itervalues()
d.iteritems()
d.setdefault('name', 'ken') # , ,
その他
1.辞書のソートkeyでソート
keys = d.keys()
keys.sort()
for key in keys:
print d.get(key)
valueでソート
sorted(d.items(), lambda x,y: cmp(x[1],y[1]))
さらに、
# d
sorted(d) # sorted(d.keys()), key
2.keyとしてカスタムオブジェクト
必須:
def __hash__(self):
pass
def __eq__(self, other):
pass
3.ディクショナリコピーの浅いコピー:
c = d.copy() #
深いコピーにはcopyモジュールが必要です
form copy import deepcopy
c = deepcopy(d)
4.シーン仮定を用いて大きなリストlがあり、10 wのレコードがあると仮定する
bの要素がlにあるかどうかを判断する小さなリストbがあります.
次の場合:
for i in b:
if i in l:
dosomething()
とても遅いことに気づきます第2のin文は、10 w条を遍歴するので....
改善:
d = dict.fromkeys(l)
for i in b:
if i in d:
dosomething()
# ,O(n) -> O(1)
The end!
To be continue
wklken
Email: [email protected]
Blog: http://blog.csdn.net/wklken
2013-03-09
転載は出典を明記してください、ありがとうございます