[PY3]——字典中的键如何映射多个值?字典如何排序?

Defaultdict 默认字典

  • collections 模块中的 defaultdict(默认字典),可以用来构造“一个键映射多个值”这样的字典
  • 如果你想保持元素的插入顺序就应该使用list, 如果想去掉重复元素就使用set
import collections import defaultdict
d=defaultdict(list)  /  e=defaultdict(set)
d = {
    ‘a‘ : [1, 2, 3],
    ‘b‘ : [4, 5]
}
e = {
    ‘a‘ : {1, 2, 3},
    ‘b‘ : {4, 5}
}
  • 要注意,defaultdict会自动为将要访问的键(就算目前字典中并不存在这样的键)创建映射实体
from collections import defaultdict
d=defaultdict(list)
d[1].append(‘a‘)
d[1].append(‘b‘)
d[2].append(‘a‘)
print(d[0])
    []    //即使我们没有为d[0]赋值,但依旧为这个位置占了个坑
print(d)
    defaultdict(<class ‘list‘>, {0: [], 1: [‘a‘, ‘b‘], 2: [‘a‘]})

q=defaultdict(set)
q[0].add(‘a0‘)
q[0].add(‘b0‘)
q[0].add(‘c0‘)
q[1].add(‘d1‘)
print(q)
    defaultdict(<class ‘set‘>, {0: {‘b0‘, ‘c0‘, ‘a0‘}, 1: {‘d1‘}})

setdefault

p={}
p.setdefault(‘1‘,[]).append(‘a‘)
p.setdefault(‘1‘,[]).append(‘b‘)
p.setdefault(‘2‘,[]).append(‘c‘)
print(p[0])
    KeyError: 0  #和上面相反,这个并不会占坑
print(p) {‘2‘: [‘c‘], ‘1‘: [‘a‘, ‘b‘]}

创建一个多值映射字典

d = {}
for key, value in pairs:
    if key not in d:
        d[key] = []
    d[key].append(value)

d = defaultdict(list)
for key, value in pairs:
    d[key].append(value)
时间: 2024-11-10 00:31:49

[PY3]——字典中的键如何映射多个值?字典如何排序?的相关文章

1.6 字典中的键映射多个值

body, td { font-family: 微软雅黑; font-size: 10pt; } Edit 1.6 字典中的键映射多个值 问题 实现一个字典结构,一个键可以对应多个值 解决方案 1.列表和集合 1.>>> d2.{'b': [4, 5], 'a': [1, 2, 3]}3.>>> d['b']4.[4, 5]5.>>> e={'a':{1,2,2,3},'b':{2,3,4,4}}6.>>> e7.{'b': {2,

Python之字典中的键映射多个值

字典的键值是多个,那么就可以用列表,集合等来存储这些 键值 举例 print({"key":list()}) # {'key': []} print({"key":set()}) # {'key': set()} 那么Python中有哪些方法能创建这样的字典呢 from collections import defaultdict dic_list=defaultdict(list) # defaultdict(<class 'list'>, {}) p

for 循环遍历字典中的键值两种方法

一.先获取key,然后通过dic[key]获取value import time dict = {'山东':'济南','河南':'郑州','江苏':'南京'} for key in dict: print(key) print(key,dict[key]) time.sleep(1) 江苏江苏 南京山东山东 济南河南河南 郑州 (python中的字典的无序的,所以输出时不按照顺序) 二.对字典items()方法返回的元组列表进行序列解包 import time dict = {'山东':'济南'

C# 删除字典中的键

//首先,判断,道具使用背包中的道具如果被销售完了,则,把该道具从道具背包中去掉 var dropinuse=UserData.Instance().dataTemp["userdata"].asDict()["dropusebag"].asDict(); var buffer = new List<string>(dropinuse.Keys); foreach (var kk in buffer) { //如果背包里不包括对应的key,则把相应的ke

Objective-C中把数组中字典中的数据转换成URL

可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对.而在OC我们要用字典(Dictionary)来存储,当然了Java用的是Map来存储键值对.下面我们将实现一个极为实用的小例子,网络请求有get和post方法,两种方法各有其优点.在表单提交时Post方法用的更多一些,URL传值则会用到Get方法.在用PHP编程的时候肯定会经常拼接url来传参或者请求,在IOS开发中会向服务器通过url请求一些数据,所以对url的拼接是少

Python中字典的键映射多个值(列表或者集合)

一个字典就是一个键对应一个单值的映射. 如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容器中, 比如列表或者集合里面.可以像下面这样构造这样的字典: message={'姓名':'马云','性别':'男','年龄':18} #用列表 message['爱好']=['对钱没兴趣','花钱有兴趣'] #用集合 message['兴趣']={'不想创业阿里','没意思'} 选择使用列表还是集合取决于你的实际需求.如果你想保持元素的插入顺序就应该使用列表, 如果想去掉重复元素就使用集合(并

把1到100的数字拆分成字典中的两个键值对 python

需求:把1到100的列表拆分成字典中两个键值对,k1和k2. #!/usr/bin/python num = {} all_list = [] for nu in range(1101): all_list.append(nu) for i in all_list: if i < 75: if 'k1' in num.keys(): num['k1'].append(i) else: num['k1'] = [i, ] else: if 'k2' in num.keys(): num['k2']

dictionary将键和值添加或替换到字典中:如果不存在,则添加;存在,则替换

/// <summary> /// 将键和值添加或替换到字典中:如果不存在,则添加:存在,则替换 /// </summary> public static Dictionary<TKey, TValue> AddOrPeplace<TKey, TValue>(this Dictionary<TKey, TValue> dict, TKey key, TValue value) { dict[key] = value; return dict; }

Python 字典(Dictionary) has_key()方法-判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false

描述 Python 字典(Dictionary) has_key() 函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false. 语法 has_key()方法语法: dict.has_key(key) 参数 key -- 要在字典中查找的键. 返回值 如果键在字典里返回true,否则返回false. 实例 以下实例展示了 has_key()函数的使用方法: #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7} pri