美文网首页
2019-06-28 字典和集合

2019-06-28 字典和集合

作者: 张大志的博客 | 来源:发表于2019-06-28 17:14 被阅读0次
    字典和集合的创建
    d1 = {'name': 'jason', 'age': 20, 'gender': 'male'}
    d2 = dict({'name': 'jason', 'age': 20, 'gender': 'male'})
    d3 = dict([('name', 'jason'), ('age', 20), ('gender', 'male')])
    d4 = dict(name='jason', age=20, gender='male') 
    d1 == d2 == d3 ==d4
    True
    
    s1 = {1, 2, 3}
    s2 = set([1, 2, 3])
    s1 == s2
    True
    访问字典
    d = {'name': 'jason', 'age': 20}
    d['name']
    d = {'name': 'jason', 'age': 20}
    d.get('name')
    'jason'
    判断一个元素是否在字典和集合内
    s = {1, 2, 3}
    1 in s
    True
    10 in s
    False
    
    d = {'name': 'jason', 'age': 20}
    'name' in d
    True
    'location' in d
    False
    字典和集合的增、删和更新
    d = {'name': 'jason', 'age': 20}
    d['gender'] = 'male' # 增加元素对'gender': 'male'
    d['dob'] = '1999-02-01' # 增加元素对'dob': '1999-02-01'
    d
    {'name': 'jason', 'age': 20, 'gender': 'male', 'dob': '1999-02-01'}
    d['dob'] = '1998-01-01' # 更新键'dob'对应的值 
    d.pop('dob') # 删除键为'dob'的元素对
    '1998-01-01'
    d
    {'name': 'jason', 'age': 20, 'gender': 'male'}
    
    s = {1, 2, 3}
    s.add(4) # 增加元素 4 到集合
    s
    {1, 2, 3, 4}
    s.remove(4) # 从集合中删除元素 4
    s
    {1, 2, 3}
    根据字典的键和值进行升序和降序
    d = {'b': 1, 'a': 2, 'c': 10}
    d_sorted_by_key = sorted(d.items(), key=lambda x: x[0]) # 根据字典键的升序排序
    d_sorted_by_value = sorted(d.items(), key=lambda x: x[1]) # 根据字典值的升序排序
    d_sorted_by_key
    [('a', 2), ('b', 1), ('c', 10)]
    d_sorted_by_value
    [('b', 1), ('a', 2), ('c', 10)]
    集合的排序
    s = {3, 4, 2, 1}
    sorted(s) # 对集合的元素进行升序排序
    [1, 2, 3, 4]
    
    def find_product_price(products, product_id):
        for id, price in products:
            if id == product_id:
                return price
        return None 
         
    products = [
        (143121312, 100), 
        (432314553, 30),
        (32421912367, 150) 
    ]
    
    print('The price of product 432314553 is {}'.format(find_product_price(products, 432314553)))
    
    # 输出
    The price of product 432314553 is 30
    如果用字典存储这些数据会更高效
    products = {
      143121312: 100,
      432314553: 30,
      32421912367: 150
    }
    print('The price of product 432314553 is {}'.format(products[432314553])) 
    
    # 输出
    The price of product 432314553 is 30
    
    # list version
    def find_unique_price_using_list(products):
        unique_price_list = []
        for _, price in products: # A
            if price not in unique_price_list: #B
                unique_price_list.append(price)
        return len(unique_price_list)
    
    products = [
        (143121312, 100), 
        (432314553, 30),
        (32421912367, 150),
        (937153201, 30)
    ]
    print('number of unique price is: {}'.format(find_unique_price_using_list(products)))
    
    # 输出
    number of unique price is: 3
    
    
    # set version
    def find_unique_price_using_set(products):
        unique_price_set = set()
        for _, price in products:
            unique_price_set.add(price)
        return len(unique_price_set)        
    
    products = [
        (143121312, 100), 
        (432314553, 30),
        (32421912367, 150),
        (937153201, 30)
    ]
    print('number of unique price is: {}'.format(find_unique_price_using_set(products)))
    
    # 输出
    number of unique price is: 3
    比较字典和集合统计产品价格的运行时间
    import time
    id = [x for x in range(0, 100000)]  #初始化一个列表
    price = [x for x in range(200000, 300000)]  
    products = list(zip(id, price))  #拉链函数zip
    
    # 计算列表版本的时间
    start_using_list = time.perf_counter()  #计算器的时间格式,更精确
    find_unique_price_using_list(products)
    end_using_list = time.perf_counter()
    print("time elapse using list: {}".format(end_using_list - start_using_list))
    ## 输出
    time elapse using list: 41.61519479751587
    
    # 计算集合版本的时间
    start_using_set = time.perf_counter()
    find_unique_price_using_set(products)
    end_using_set = time.perf_counter()
    print("time elapse using set: {}".format(end_using_set - start_using_set))
    # 输出
    time elapse using set: 0.008238077163696289
    

    相关文章

      网友评论

          本文标题:2019-06-28 字典和集合

          本文链接:https://www.haomeiwen.com/subject/yddecctx.html