天天看點

python字典 dict

<code>#dict 字典;是一種key:value的資料類型,沒有下标,是無序的。字典可以嵌套任何類型,可以嵌套很多層。</code>

<code>#格式</code>

<code>dict1 </code><code>=</code> <code>{</code>

<code>    </code><code>"name1"</code><code>:</code><code>"123"</code><code>,</code>

<code>    </code><code>"name2"</code><code>:</code><code>"456"</code><code>,</code>

<code>    </code><code>"name4"</code><code>:</code><code>"678"</code>

<code>    </code><code># " key":"value"</code>

<code>}</code>

<code>#查詢:</code>

<code>print</code><code>(dict1)                        </code><code>#查詢字典内容</code>

<code>print</code><code>(dict1[</code><code>"name1"</code><code>])               </code><code>#查詢字典指定value,如果沒有就報錯</code>

<code>print</code><code>(dict1.get(</code><code>"name1"</code><code>))           </code><code>#查詢字典指定value,如果沒有傳回None,建議使用這個查詢value</code>

<code>print</code><code>(dict1.keys())                  </code><code>#查詢字典所有的key</code>

<code>print</code><code>(dict1.values())                </code><code>#查詢字典所有的values</code>

<code>#修改</code>

<code>dict1[</code><code>"name1"</code><code>] </code><code>=</code> <code>"444"</code>

<code>print</code><code>(dict1.get(</code><code>"name1"</code><code>))</code>

<code>#添加</code>

<code>dict1[</code><code>"name3"</code><code>] </code><code>=</code> <code>"789"</code>              <code>#如果name3的key值不存在,就建立一條新的資料</code>

<code>print</code><code>(dict1)</code>

<code>#删除1</code>

<code>del</code> <code>dict1[</code><code>"name1"</code><code>]                  </code><code>#删除key name1</code>

<code>#删除2</code>

<code>dict1.pop(</code><code>"name2"</code><code>)                  </code><code>#删除key name2</code>

<code>#删除3</code>

<code>dict1.popitem()                      </code><code>#随機删除一個key</code>

<code>#判斷字典裡有沒有key  有傳回True 否則False</code>

<code>print</code><code>(</code><code>"name4"</code> <code>in</code> <code>dict1)             </code><code>#python2.X這麼寫dict1.has_key("name1")</code>

<code>#多級字典嵌套及操作</code>

<code>#多級字典嵌套格式,字典可以嵌套任何類型;</code>

<code>china </code><code>=</code> <code>{</code>

<code>    </code><code>"北京"</code><code>:{</code><code>"騰訊"</code><code>:[</code><code>"www.tengxun.com"</code><code>,</code><code>"www.qq.com"</code><code>]},</code>

<code>    </code><code>"山西"</code><code>:{</code><code>"百度"</code><code>:[</code><code>"www.baidu.com"</code><code>,</code><code>"www.baike.com"</code><code>]},</code>

<code>    </code><code>"山東"</code><code>:{</code><code>"搜狗"</code><code>:[</code><code>"www.sougou.com"</code><code>,</code><code>"www.pinyin.com"</code><code>]}</code>

<code>#dict.setdefault</code>

<code>dict1.setdefault(</code><code>"name5"</code><code>,</code><code>"555"</code><code>)     </code><code>#去字典裡查詢有沒有key,如果有使用原資料,沒有則建立新記錄</code>

<code>#dict1.update()     合并兩個字典;</code>

<code>#例如:把括号裡的字典合并到update前邊的字典,有相同的key就覆寫,沒有就添加。</code>

<code>info1 </code><code>=</code> <code>{</code><code>"name1"</code><code>:</code><code>"111"</code><code>,</code><code>"name2"</code><code>:</code><code>"222"</code><code>}</code>

<code>info2 </code><code>=</code> <code>{</code><code>"name1"</code><code>:</code><code>"333"</code><code>,</code><code>"name3"</code><code>:</code><code>"333"</code><code>,</code><code>"name4"</code><code>:</code><code>"444"</code><code>}</code>

<code>info1.update(info2)</code>

<code>print</code><code>(info1)</code>

<code>#輸出:{'name1': '333', 'name2': '222', 'name3': '333', 'name4': '444'}</code>

<code>#建立一個新的字典,前邊為key,後邊為value;但是相當于淺copy,三個key共享一個value記憶體位址。</code>

<code>dict2 </code><code>=</code> <code>dict</code><code>.fromkeys([</code><code>1</code><code>,</code><code>2</code><code>,</code><code>3</code><code>],[</code><code>1</code><code>,[</code><code>111</code><code>,</code><code>222</code><code>],</code><code>"test"</code><code>])</code>

<code>print</code><code>(dict2)</code>

<code>#輸出:{1: [1, [111, 222], 'test'], 2: [1, [111, 222], 'test'], 3: [1, [111, 222], 'test']}</code>

<code>dict2[</code><code>1</code><code>][</code><code>0</code><code>] </code><code>=</code> <code>"555"</code>         <code>#改變value的0對應的元素,三個key的value都跟着變了</code>

<code>#輸出:{1: ['555', [111, 222], 'test'], 2: ['555', [111, 222], 'test'], 3: ['555', [111, 222], 'test']}</code>

<code>#循環dict</code>

<code>#循環一    高效</code>

<code>for</code> <code>i </code><code>in</code> <code>dict1:</code>

<code>    </code><code>print</code><code>(i,dict1[i])               </code><code>#根據循環出的的key可以求出value</code>

<code>'''</code>

<code>#輸出:</code>

<code>    </code><code>name1 123</code>

<code>    </code><code>name2 456</code>

<code>    </code><code>name4 678</code>

<code>#循環二    比循環一低效,</code>

<code>for</code> <code>k,v </code><code>in</code> <code>dict1.items():           </code><code>#循環的時候會先将字典轉換成清單,清單裡邊是一個個元組,資料大了會慢</code>

<code>    </code><code>print</code><code>(k,v)</code>

     本文轉自506554897 51CTO部落格,原文連結:http://blog.51cto.com/506554897/1939670,如需轉載請自行聯系原作者