Python词典 - 将数组附加到特定键的字典中。

时间:2018-04-17 15:04:10

标签: python dictionary

这是关于将数组附加到具有特定键的字典。

目标是为字典中的特定键分配多个数组:

{1: [1,2,3,4], [6,3,2,3], 2: None, 3: None}

有一本字典

my_dict = dict.fromkeys([i for i in range(1,4)]
my_dict
{1: None, 2: None, 3: None}

我有很多数组:

array1 = [1,2,3,4]  
array2 = [6,3,2,3]
array3 = [5,7,11,15]

我希望将array1与key = 1

相关联
my_dict[1] = array1
#the content of the my_dict is:
my_dict
{1: [1, 2, 3, 4], 2: None, 3: None}

然后我希望添加与key 1关联的array2。 但如果我这样做

my_dict[1].append(array2); 
#I get
my_dict
{1: [1, 2, 3, 4, [6,3,2,3]], 2: None, 3: None}

换句话说,我想知道如何附加一个特定的密钥,以便我得到以下

{1: [1, 2, 3, 4], [6, 3, 2, 3], 2: None, 3: None}

不是

{1: [1, 2, 3, 4, [6,3,2,3]], 2: None, 3: None}

总之,我想将一些数组附加到字典中以获取特定键,以便我得到:

{1: [1,2,3,4], [6,3,2,3], 2: None, 3: None}

谢谢你, 悉尼的安东尼。

4 个答案:

答案 0 :(得分:2)

您的语法不正确。您可能需要的是list.append个列表。

然后在每次要添加到列表列表时使用from collections import defaultdict array1 = [1,2,3,4] array2 = [6,3,2,3] array3 = [5,7,11,15] my_dict = defaultdict(list) my_dict[1].append(array1) my_dict[1].append(array2) defaultdict(list, {1: [[1, 2, 3, 4], [6, 3, 2, 3]]})

list.extend

另一方面,如果您想要一个列表并希望添加元素,请使用my_dict = defaultdict(list) my_dict[1].extend(array1) my_dict[1].extend(array2) # defaultdict(list, {1: [1, 2, 3, 4, 6, 3, 2, 3]})

students = students.Where(x => (Fname == null || x.FirstName==Fname)
        && (Lname == null || x.LastName==Lname)
        && (ClassDate == null || x.classdate==ClassDate));

答案 1 :(得分:0)

我认为你无法实现它。

{1: [1,2,3,4], [6,3,2,3], 2: None, 3: None}

但你可以得到:

{1: [[1,2,3,4], [6,3,2,3]], 2: [], 3: []}

my_dict = {i:[]for i in range(1,4)}
my_dict[1].append(array1)
my_dict[1].append(array2)

答案 2 :(得分:0)

我猜你想要的是{1: [[1, 2, 3, 4], [6, 3, 2, 3]], 2: None, 3: None}。然后你必须这样做:my_dict[1] = [array1, array2]。否则,如果您需要{1: [1, 2, 3, 4, 6, 3, 2, 3], 2: None, 3: None},则必须执行以下操作:my_dict[1] += array2(一旦您完成了my_dict[1] = array1)。

答案 3 :(得分:0)

这是第一个回答者和我对第一个回答者的评论的扩展。

如果我有以下数组:

array1 = [1,2,3,4]
array2 = [2,6,27,1]
array3 = [6,1,2,3]
array4 = [7,1,2,6]
array5 = [8,2,1,6]
array6 = [3,4,1,1]

我的字典如下:

from collections import defaultdict
my_dict = defaultdict(list)

现在我将为不同的键附加以下数组:

my_dict[1].append(array1)
my_dict[1].append(array2)
my_dict[1].append(array3)
my_dict[2].append(array4)
my_dict[3].append(array5)
my_dict[3].append(array6)

my_dict的内容

{1:[[1,2,3,4],[2,6,27,1],[6,1,2,3]], 2:[[7,1,2,6]], 3:[[8,2,1,6],[3,4,1,1]] }

获取与key = 1相关联的数组

foo = my_dict[1]
foo
[[1,2,3,4],[2,6,27,1],[6,1,2,3]]

现在获取第3列数据:

import numpy as np #Need to use it to convert to array and float later on
foo = np.array(foo);# Have to convert it to an array
doo = foo[:,2]
doo
[3,27,2]

现在可能存在这样的情况:您的数组可能是字符串和浮点数或整数的混合,这样数组中的所有元素都是字符串。

foo 
[['1','2','3','4'],['2','6','27','1'],['6','1','2','3']]
foo = np.float32(foo)
foo
[[1.,2.,3.,4.],[2.,6.,27.,1.],[6.,1.,2.,3.]]

结论:我们可以使用defaultdict将数组附加到字典中以获取特定键。还可以通过常规列选择方法提取所选矩阵的子集。如果与键关联的数组包含字符串元素,我们可以将数据转换为numpy.float32,比如说或者我们需要用数字进行计算的地方。

谢谢你, 悉尼的安东尼