您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“python列表、字典、循環(huán)、判斷舉例分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“python列表、字典、循環(huán)、判斷舉例分析”吧!
下面通過一個簡化的虛擬案例做一次深入學(xué)習(xí)python小練習(xí),有某果園銷售數(shù)據(jù)如下:
sell_list = [ {'客戶': '張三', '種類': '蘋果','數(shù)量':100}, {'客戶': '李四', '種類': '蘋果','數(shù)量':200}, {'客戶': '李四', '種類': '香梨','數(shù)量':200}, {'客戶': '李四', '種類': '香梨','數(shù)量':300}, {'客戶': '張三', '種類': '蘋果','數(shù)量':100}, {'客戶': '王五', '種類': '香蕉','數(shù)量':500}, {'客戶': '王五', '種類': '香蕉','數(shù)量':150}, {'客戶': '王五', '種類': '香蕉','數(shù)量':150}, {'客戶': '王五', '種類': '蘋果','數(shù)量':500}, {'客戶': '趙六', '種類': '葡萄','數(shù)量':300}, {'客戶': '李四', '種類': '葡萄','數(shù)量':300}, {'客戶': '趙六', '種類': '蘋果','數(shù)量':300}, ]
客戶希望對數(shù)據(jù)進行整理,期待得到的數(shù)據(jù)集格式類似如下這樣:
result_list = [ ['張三', {'蘋果': 300, '香蕉': 200, }], ['李四', {'蘋果': 100, '香蕉': 200, }], ['王五', {'蘋果': 100, '香蕉': 200, }], ]
客戶原始數(shù)據(jù)池是列表,列表元素是客戶、果名、數(shù)量。現(xiàn)在的需求是對列表元素進行匯總,得出客戶、果名、數(shù)量的匯總表。
首先遍歷原始數(shù)據(jù)池,判斷客戶名:
若在數(shù)據(jù)集中客戶名不存在,則數(shù)據(jù)集中添加客戶名,同時將果名和數(shù)量以字典格式加入數(shù)據(jù)集。
若在數(shù)據(jù)集中客戶名存在,則判斷果名:
若在數(shù)據(jù)集中果名存在,則將數(shù)量累加。
若在數(shù)據(jù)集中果名不存在,則添加果名和數(shù)量。
通過以上分析有個大致的框架,通過2層嵌套循環(huán)加判斷來編寫代碼。
我設(shè)想的代碼有2種方案:
二層循環(huán)嵌套if的列表實現(xiàn)方式,優(yōu)點是較省內(nèi)存,缺點是速度略慢:
result_list = [] for i in sell_list: for j in result_list: if j[0] == i['客戶']: if i['種類'] not in j[1]: j[1][i['種類']] = i['數(shù)量'] else: j[1][i['種類']] = j[1][i['種類']] + i['數(shù)量'] break else: result_list.append([i['客戶'], {i['種類']: i['數(shù)量'], }]) for i in result_list: print(i) out: ['張三', {'蘋果': 200}] ['李四', {'蘋果': 200, '香梨': 500, '葡萄': 300}] ['王五', {'香蕉': 800, '蘋果': 500}] ['趙六', {'葡萄': 300, '蘋果': 300}]
上述代碼有一個需要特別注意的地方,循環(huán)體內(nèi)break會跳過整個循環(huán)體(含循環(huán)體的else部分)。這一點很多教材都沒有講得很透徹。
單層循環(huán)嵌套if的字段實現(xiàn)方式,優(yōu)點是速度較快,缺點是較費內(nèi)存:
result_dict = {} for i in sell_list: if i['客戶'] in result_dict: if i['種類'] not in result_dict[i['客戶']]: result_dict[i['客戶']][i['種類']] = i['數(shù)量'] else: result_dict[i['客戶']][i['種類']] += i['數(shù)量'] else: result_dict[i['客戶']] = {i['種類']: i['數(shù)量']} for i, j in result_dict.items(): print(i, j) out: 張三 {'蘋果': 200} 李四 {'蘋果': 200, '香梨': 500, '葡萄': 300} 王五 {'香蕉': 800, '蘋果': 500} 趙六 {'葡萄': 300, '蘋果': 300}
在字典實現(xiàn)方式中看起來是比列表實現(xiàn)方式少了一層循環(huán),實質(zhì)上這個循環(huán)的目的在“if i['種類'] not in result_dict[i['客戶']]:”這個部分已經(jīng)實現(xiàn)了,在容器中找成員,字典是速度最快同時也是最費內(nèi)存的方式。
到此,相信大家對“python列表、字典、循環(huán)、判斷舉例分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。