1. 程式人生 > >python數據結構-如何在列表、字典、集合中根據條件篩選數據

python數據結構-如何在列表、字典、集合中根據條件篩選數據

san 根據 hang 舉例 解析 tar set target .html

如何在列表、字典、集合中根據條件篩選數據

問題舉例:

過濾列表[1, 2, 5, -1, 9, 10]中的負數

篩選字典{“zhangsan”:97, "lisi":80, "wangwu":60, "liqiang":91}中的值高於90的鍵值對

篩選集合{89, 70, 60, 80, 90}中能被3整除的元素

列表

一般遇到這種問題,我們首先會想到用for循環的方式去解決

(1)for循環

from random import randint
nums = [randint(-10, 10) for _ in range(20)] #生成一個列表
res_list 
= [] for ele in nums: if ele > 0: res_list.append(ele)

但是這種方式並不pythonic

(2)列表解析

from random import randint
nums = [randint(-10, 10) for _ in range(20)]
res_list = [ele for ele in nums if ele > 0] #list comprehension

(3)filter函數

from random import randint
nums = [randint(-10, 10) for
_ in range(20)] res_filter = filter(lambda x: x > 0, nums) #filter res_list = list(res_filter)

字典

(1)字典解析

from random import randint
grade_info = {"stu%d" % i: randint(50, 100) for i in range(10)}
res_dict = {k: v for k, v in grade_info.items() if v > 70}

(2)filter函數

集合

集合解析

from random import randint
nums_set = {randint(10, 20) for _ in range(20)}
nums_res = {ele for ele in nums_set if ele % 3 == 0}

參考資料:python3實用編程技巧進階

python數據結構-如何在列表、字典、集合中根據條件篩選數據