如何为Python字典的指定键关联并追加多个数组?
解决字典键关联多数组的追加问题
嘿,这问题其实很容易搞定!你现在已经把array1赋值给了my_dict[1],现在要追加array2进去,核心是要让键1对应的值变成嵌套列表(也就是列表里装列表),而不是把两个数组的元素合并到同一个列表里。
方法一:通用追加方案(支持后续继续加更多数组)
因为你当前my_dict[1]的值是单个数组[1,2,3,4],不是嵌套列表,直接用append会把array2的元素逐个加进去,这不是你想要的结果。我们需要先把它转成嵌套结构,再追加:
# 初始化你的字典和数组 my_dict = dict.fromkeys([i for i in range(1,4)]) array1 = [1,2,3,4] array2 = [6,3,2,3] array3 = [5,7,11,15] # 先给键1赋值array1 my_dict[1] = array1 # 开始追加array2 # 第一步:检查当前值是否是嵌套列表(列表的列表) if not isinstance(my_dict[1], list) or (isinstance(my_dict[1], list) and not isinstance(my_dict[1][0], list)): # 如果是单个数组或None,包装成嵌套列表 my_dict[1] = [my_dict[1]] if my_dict[1] is not None else [] # 第二步:追加新数组 my_dict[1].append(array2) # 要是之后还要追加array3,直接继续append就行 # my_dict[1].append(array3) print(my_dict) # 输出结果:{1: [[1, 2, 3, 4], [6, 3, 2, 3]], 2: None, 3: None}
方法二:一步到位(适合只加两个数组的情况)
如果确定只需要把array1和array2关联到键1,也可以直接重新赋值成嵌套列表,这种方式更简洁:
my_dict[1] = [array1, array2]
不过要是之后还要加第三个数组,还是得用第一种方法的append操作。
额外小建议:初始化字典时直接用空列表
如果一开始就知道要给键关联多个数组,不如在创建字典的时候就把值初始化为空列表,这样后续直接append就行,不用做类型检查:
# 替换原来的fromkeys初始化方式 my_dict = {k: [] for k in range(1,4)} # 直接追加数组到键1 my_dict[1].append(array1) my_dict[1].append(array2) print(my_dict) # 输出:{1: [[1, 2, 3, 4], [6, 3, 2, 3]], 2: [], 3: []}
这样是不是更省心?不过如果你已经用fromkeys创建了字典,前面的方法完全能解决你的问题。
内容的提问来源于stack exchange,提问作者Anthony from Sydney
相关产品推荐
相关产品推荐

