ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python的数据结构整理-002-列表,字典,集合,怎么选?

2021-12-21 21:05:21  阅读:271  来源: 互联网

标签:10001003 format python price list 002 products time 数据结构


列表,字典,集合,怎么选?

假设现在有一个电商后台存了产品的ID和价格。有一个需求是给定ID如何找出对应价格?

如果使用列表来存储数据结构,并进行查找,那么代码如下。

# products list version
def FindProductPrice(products,product_id):
    for id, price in products:
        if id == product_id:
            return price
    return none

products = [(10001001,100),(10001002,120),(10001003,130)]
print("The price of product 10001003 is {}.".format(FindProductPrice(products,10001003)))

如果使用字典来存储数据结构,那么查找代码如下。

# products dict version
products = {10001001:100,10001002:120,10001003:130}
print("The price of product 10001003 is {}.".format(products[10001003]))

当需求变为找出商品有多少种不同的价格的时候怎么办?

列表版本。

# list version
def FindUniquePriceUsingList(products):
    UniquePriceList = []
    for _, price in products:
        if price not in UniquePriceList:
            UniquePriceList.append(price)
    return len(UniquePriceList)
products = [(10001001,100),(10001002,120),(10001003,130)]
print("Number of unique price is {}.".format(FindUniquePriceUsingList(products)))

集合版本。

# set version
def FindUniquePriceUsingSet(products):
    UniquePriceSet = set()
    for _, price in products:
        UniquePriceSet.add(price)
    return len(UniquePriceSet)
products = [(10001001,100),(10001002,120),(10001003,130)]
print("Number of unique price is {}.".format(FindUniquePriceUsingSet(products)))

列表版本和集合版本的性能比较,可以明显的看到集合版本节省了大量的时间。

import time
id = [x for x in range(0, 100000)]
price = [x for x in range(200000, 300000)]
products = list(zip(id, price))

# list version
StartUsingListTime = time.perf_counter()
FindUniquePriceUsingList(products)
EndUsingListTime = time.perf_counter()
print("time elapse using list: {}".format(EndUsingListTime - StartUsingListTime))

# set version
StartUsingSetTime = time.perf_counter()
FindUniquePriceUsingSet(products)
EndUsingSetTime = time.perf_counter()
print("time elapse using set: {}".format(EndUsingSetTime - StartUsingSetTime ))


time elapse using list: 31.758130708999943
time elapse using set: 0.004608834000009665

标签:10001003,format,python,price,list,002,products,time,数据结构
来源: https://www.cnblogs.com/jason007/p/15717056.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有