zoukankan      html  css  js  c++  java
  • Python 字典的一键多值,即一个键对应多个值

    转自:http://blog.csdn.net/houyj1986/article/details/22624981

    #encoding=utf-8
    
    print '中国'
    
    #字典的一键多值
    
    print'方案一 list作为dict的值 值允许重复'  
    
    d1={}
    key=1
    value=2
    d1.setdefault(key,[]).append(value)
    value=2
    d1.setdefault(key,[]).append(value)
    
    print d1
    
    #获取值
    print '方案一 获取值'
    print list(d1[key])
    
    print '方案一 删除值,会留下一个空列表'
    d1[key].remove(value)
    d1[key].remove(value)
    print d1 
    
    print '方案一 检查是否还有一个值'
    print d1.get(key,[])
    
    print '方案二 使用子字典作为dict的值 值不允许重复'
    
    d1={}
    key=1
    keyin=2
    value=11
    d1.setdefault(key,{})[keyin]=value
    keyin=2
    value=22
    d1.setdefault(key,{})[keyin]=value
    keyin=3
    value=33
    d1.setdefault(key,{})[keyin]=value
    
    print d1
    
    print '方案二 获取值'
    print list(d1[key])
    
    print '方案二 删除值,会留下一个空列表'
    del d1[key][keyin]
    keyin=2
    del d1[key][keyin]
    print d1
    
    print '方案二 检查是否还有一个值'
    print d1.get(key,())
    
    print '方案三 使用set作为dict的值 值不允许重复'
    d1={}
    key=1
    value=2
    d1.setdefault(key,set()).add(value)
    value=2
    d1.setdefault(key,set()).add(value)
    value=3
    d1.setdefault(key,set()).add(value)
    
    print d1
    
    print '方案三 获取值'
    print list(d1[key])
    
    print '方案三 删除值,会留下一个空列表'
    d1[key].remove(value)
    value=2
    d1[key].remove(value)
    print d1 
    
    print '方案三 检查是否还有一个值'
    print d1.get(key,())
    打印结果如下:
    中国
    方案一 list作为dict的值 值允许重复
    {1: [2, 2]}
    获取值
    [2, 2]
    删除值,会留下一个空列表
    {1: []}
    检查是否还有一个值
    []
    方案二 使用子字典作为dict的值 值不允许重复
    {1: {2: 22, 3: 33}}
    获取值
    [2, 3]
    删除值,会留下一个空列表
    {1: {}}
    检查是否还有一个值
    {}
    方案三 使用set作为dict的值 值不允许重复
    {1: set([2, 3])}
    获取值
    [2, 3]
    删除值,会留下一个空列表
    {1: set([])}
    检查是否还有一个值
    set([])
    

      

  • 相关阅读:
    缓存雪崩与缓存穿透
    读取表中最大值
    使用vscode在谷歌上运行代码
    elment 中tree组件展开所有和收缩所有节点
    深度系统商店提示无法安装软件依赖错误
    诗词,理解,品论
    《45个十分钟读懂资本论》原文、适合朗读版和个人见解
    《论持久战》全文
    OSError: [WinError 126] 找不到指定的模块。
    C++ 获取序列最大(或最小)的 N 个元素
  • 原文地址:https://www.cnblogs.com/rrttp/p/8493264.html
Copyright © 2011-2022 走看看