zoukankan      html  css  js  c++  java
  • 字典经典习题

    1.有字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....} 

    1 # 转换成字典(面试题) 这里面主要就是一个切割
    2 str1 = "k:1|k1:2|k2:3|k3:4"
    3 dic = {}
    4 lst = str1.split("|")
    5 for l in lst:
    6     lst2 = l.split(":")
    7     dic[lst2[0]] = lst2[1]
    8 print(dic)
    View Code

    2.元素分类:有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

    即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
    # 解法1 最撮

    1 # 最直接的先初始化两个key 如果全部在一边就不太好
    2 dic = {'k1': [], "k2": []}
    3 li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
    4 for num in li:
    5     if num > 66:
    6         dic["k1"].append(num)
    7     else:
    8         dic["k2"].append(num)
    9 print(dic)
    View Code

    # 解法2 get方法

     1 dic = {}
     2 for num in li:
     3     if num > 66:
     4         if dic.get("k1") == None:
     5             dic["k1"] = [num]
     6             # 第一次指定key1的值得时候,一定要是列表的形式
     7 
     8         else:
     9             dic["k1"].append(num)
    10             # 进入列表就是append
    11     else:
    12         if dic.get("k2") == None:
    13             dic["k2"] = [num]
    14         else:
    15             dic["k2"].append(num)
    16 
    17 print(dic)
    View Code

    #解法3 setdefault 对get的进一步抽象

    1 dic = {}
    2 for num in li:
    3     if num < 66:
    4         dic.setdefault('key1', []).append(num)
    5     else:
    6         dic.setdefault('key2', []).append(num)
    7 print(dic)
    View Code

    # 根据数字长度分类数据

    1 a = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 32769, 65535,955215622]
    2 a = [str(i) for i in a]
    3 # print(a)
    4 dic = {}
    5 for i in a:
    6     l = len(i)
    7     dic.setdefault(l, []).append(i)
    8 print(dic)
    View Code

    3.统计车流量 

     1 # coding:utf-8
     2 # 统计每个省的车辆数目
     3 # 如果能get到 那么加1即可 否则初始化为1
     4 cars = ['鲁A', '鲁B', '京C', '黑A', '黑b']
     5 locals1 = {'': '山东', '': '北京', '': '黑龙江'}
     6 dic = {}
     7 for car in cars:
     8     if dic.get(car[0]):
     9         dic[car[0]] += 1
    10     else:
    11         dic[car[0]] = 1
    12 print(dic)
    13 
    14 # 那么问题来了 这个可以用setdefault一行搞定吗?
    15 # 我还没想到!!!
    View Code

     4.一道列表的递归嵌套面试题

    1 a = [1, 2]
    2 a[1] = a
    3 print(a)
    4 """
    5 [1, [...]]
    6 """
    View Code

  • 相关阅读:
    react ts axios 配置跨域
    npm run eject“Remove untracked files, stash or commit any changes, and try again.”错误
    java 进程的参数和list的线程安全
    帆软报表 大屏列表跑马灯效果JS
    帆软报表 快速复用数据集,避免重复劳动
    分析云 OA中部门分级思路和实现方法
    分析云 分段器 只显示一个块的数据
    分析云 更改服务默认的端口号
    分析云U8项目配置方法新版本(2)
    Oracle 创建时间维度表并更新是否工作日字段
  • 原文地址:https://www.cnblogs.com/d9e84208/p/10569831.html
Copyright © 2011-2022 走看看