这是关于将数组附加到具有特定键的字典。
目标是为字典中的特定键分配多个数组:
{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}
谢谢你, 悉尼的安东尼。
答案 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,比如说或者我们需要用数字进行计算的地方。
谢谢你, 悉尼的安东尼