1. 程式人生 > >python設定預設字典(setdefault collections.defaultdict)

python設定預設字典(setdefault collections.defaultdict)

setdefault

dict.setdefault(key, default=None)

如果鍵不存在於字典中,將會新增新的鍵並將值設為預設值(改變了字典)。如果字典中包含有給定鍵,則返回該鍵對應的值,否則返回為該鍵設定的值。

stu = [('wang', 1), ('zhang', 4), ('fu', 2), ('li', 3), ('fu', 7), ('wang', 2), ('wang', 8)]
stu_set = {}
for k, v in stu:
    stu_set.setdefault(k, set()).add(v)
for k, v in stu_set.items
(): print(k, v) # output zhang {4} fu {2, 7} li {3} wang {8, 1, 2}

get

get()方法返回給定鍵的值。如果鍵不可用,則返回預設值(沒有改變字典)。

dict.get(key, default=None)

collections defaultdict

defaultdict() 返回一個字典,會自動給每個鍵(key)賦一個初始值

collections.default([default_factory[, ...]])

使用工廠方法default_factory給所有key對應的value賦初始值,這些工廠方法有int(), long(), float(), complex(),str(), unicode(), basestring(),
list(), tuple(),dict(),bool()
set(), frozenset(),object(), classmethod()
staticmethod(),super(),property(),file()

import collections
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = collections.defaultdict(list)
for k, v in s:
    d[k].append(v)
list(d.items())

如果不用工廠方法,也可以使用自定義方法

counts = collections.defaultdict(lambda : [0, 0, 0])

例如,可以讓每個vlaue的初始值為10

import collections
d = collections.defaultdict(lambda :10
) a = [('a', 1), ('b', 3), ('c', 2), ('b', 6), ('a', 7)] for k, v in a: d[k] += v for k, v in d.items(): print(k, v) # output c 12 b 19 a 18

相關推薦

python設定預設字典setdefault collections.defaultdict

setdefault dict.setdefault(key, default=None) 如果鍵不存在於字典中,將會新增新的鍵並將值設為預設值(改變了字典)。如果字典中包含有給定鍵,則返回該鍵對應的值,否則返回為該鍵設定的值。 stu = [('w

(轉載)PYTHON的COLLECTION系列-預設字典DEFAULTDICT

# dic1 = {}   # dic1["k1"].append("kkkkk") #正常情況會報錯 &nb

Python之列表轉字典setdefaultdefaultdict、fromkeys

setdefault result = {} data = [("p", 1), ("p", 2), ("p", 3), ("h", 1), ("h", 2), ("h", 3)] for (key, value) in data: result.setdefault(key,

python學習筆記字典

python字典是python中唯一的映射類型,采用鍵值對(key-value)的形式存儲數據。python對key進行哈希函數運算,根據計算的結果決定value的存儲地址,所以字典是無序存儲的,且key必須是可哈希的。可哈希表示key必須是不可變類型,如:數字、字符串、元組。字典(dictionary)是除

Python學習筆記字典setdefault()方法

需要 pre 字典 執行 示例 brush light col fault 隨筆記錄方便自己和同路人查閱。 #------------------------------------------------我是可恥的分割線--------------------------

列表轉換為字典setdefault()

span app div print 排序 ict tin fault ESS li=[11,22,33,44,66,77,88] dict={} li_less=[] li_large=[] for i in li: if i == 66:continue

Python 基礎之字典dict的用法

python dict字典字典是Python中唯一的內建對映型別,字典中的資料沒有特定的順序,可以通過特定的鍵(key)來存取資料。鍵可以是數字、元組或字串,但不能是列表。 字典的常用方法:1.1 clear()方法1.2 copy()方法1.3 fromkeys()方法1.4 get()方法1.5 has

Python中的字典Dict

dict 格式: dict={key1:values1,key2:values,key3:values,...} dict={'name':'john','age':'22','address':'北京'} 字典的常用操作 (1)查詢字典中的元素 ①直接用變數

Alfred 3 如何設定預設搜尋引擎以百度搜索為例

前提條件: Alfred 3 已經安裝在MAC中 首先要有破解的Alfred 3 安裝在MAC PRO中,然後進入到以下欄目:Features-->web Search-->Add Custom Search(根據以下圖來設定) ; 注意:如果需要設定指定在百度中搜索內容,需要設

Python學習筆記——字典dict

字典(dict) 字典也是一種資料型別,特點:{}界定符、可變、無序、支援‘鍵’做下標、逗號分隔、‘鍵’必須可雜湊、‘鍵’始終唯一、查詢速度非常快。形式—— 鍵:值 (鍵值對),字典中的鍵可以為任意不可變資料。 建立字典: len()可以獲取字典的元素個數: 字典元素增加: 字典值修改:

樹莓派多版本python設定預設python3

如果有的系統沒有自帶的3.4版本,需要安裝一下sudo apt-get install python31然後把python的連結刪掉sudo rm /usr/bin/python1新建一個連結sudo ln -s /usr/bin/python3.4 /usr/bin/pyt

python 列表及字典按key、按value排序

method 1: 把dictionary中的元素分離出來放到一個list中,對list排序,從而間接實現對dictionary的排序。這個“元素”可以是key,value或者item。 method2: #用lambda表示式來排序,更靈活: sorted(dict.items(), lambd

Python第二節課操作系統簡介

底層 管理 機器碼 感知 隱藏 特點 分析 style for 1.為何要有操作系統 先從操作系統的定義說起,操作系統是協調,管理和控制計算機硬件資源和軟件資源的控制程序。也就是承接我們的軟件應用和硬件調用的中間人。 操作系統位於計算機硬件和應用軟件之間,本質也是一個軟件,

python簡單小程序99乘法表

while 解釋 兩個 位與 顯示 con pri 數字 i+1 1. #99乘法表#第一種 for i in range(1,10): s=‘‘ for j in range (1,i+1): s+=str(j)+‘*‘+str(i)+‘

python Ridge 回歸嶺回歸的原理及應用

原理 blog 得到 one 技術 設置 fun src print 嶺回歸的原理: 首先要了解最小二乘法的回歸原理 設有多重線性回歸模型 y=Xβ+ε ,參數β的最小二乘估計為 當自變量間存在多重共線性,|X‘X|≈0時,設想|X‘X|給加上一個正常數矩陣(k>

python Spatialite庫應用 sqlite3擴展

pytho cut imp geo sql 是個 logs lan 查詢 問題: 需要從Spatialite庫中使用python讀取內容,有個geometry字段,讀出來的東西是一串二進制字節。附最初代碼: import sqlite3 conn = sqlite

文件內容轉換多層字典適合新手理解

返回 date usr 新手 return utf-8 輸入 pass pda #!/usr/bin/env python#-*- coding:UTF-8 -*-flag = 0return_flag = 0f = open("file3.txt","r",encodin

Python # 三元表達式後期繼續補充

否則 三元 pan else class log cnblogs 如果 pre ### if - else b=1 if 2<1 else 2 如果2小於1,則b=1,否則b=2 ### ###Python # 三元表達式(後期繼續補充)

Python學習筆記22urllib模塊

ror 轉換 decode urllib模塊 one 處理 context hello mpat Python3和Python2的urllib模塊不太一樣,本篇文章是以Python3為前提。 1.urlopen的使用 import urllib.request urll

python代碼練習每天一小時

生成 max lose 生成式 練習 == rom rabl utf-8 1 #-*- coding :utf-8 -*- 2 print("#1.函數") 3 def my_abs(x): 4 if x>=0: 5 retu