python - 使用矩阵行中的键创建字典,格式为 {row :[col, value]}

标签 python dictionary list-comprehension

给定列表列表,矩阵(行 j 和列 k,元素值),我可以使用列表理解创建值的扁平列表:

matrix = [['00','01','02'],['10','11','12'],['20','21','22']]
list_1  = [value for (j,row) in enumerate(matrix) for (k,value) in enumerate(row)]
print(list_1)
#output: ['00', '01', '02', '10', '11', '12', '20', '21', '22']

模仿嵌套 for 循环语法:

list_2 = []
for (j,row) in enumerate(matrix):
    for (k,value) in enumerate(row):
        list_2.append(value)

如果我想要一个 {j:[k,value]} 形式的 for 条目的字典,等效的字典理解语法是什么,为什么使用花括号等效不起作用?例如:

list_3  = {j:[k,value] for (j,row) in enumerate(matrix) for (k,value) in enumerate(row)}

#expected output: {0:[0,'00'], 0:[1,'01'], 0:[2,'02']...}
#actual output: {0: [2, '02'], 1: [2, '12'], 2: [2, '22']}

最佳答案

你的代码没有任何问题。字典键应该是唯一的,并且在字典中不可能有重复的键,因为引用在字典理解中是相同的键,数据将被替换,正如您在实际输出中看到的那样。您可以以这种方式使用代码

matrix = [['00','01','02'],['10','11','12'],['20','21','22']]
a_list  = {j:row for (j,row) in enumerate(matrix)}
for key,value in a_list.items():
    new_list = {}
    for i,j in enumerate(value):
        new_list[i]=j
    a_list[key] = new_list
a_list

输出:

{0: {0: '00', 1: '01', 2: '02'},
 1: {0: '10', 1: '11', 2: '12'},
 2: {0: '20', 1: '21', 2: '22'}}

matrix = [['00','01','02'],['10','11','12'],['20','21','22']]
a_list  = {j:row for (j,row) in enumerate(matrix)}
for key,value in a_list.items():
    new_list = []
    for i,j in enumerate(value):
        new_list.append([i,j])
    a_list[key] = new_list
a_list

输出:

{0: [[0, '00'], [1, '01'], [2, '02']],
 1: [[0, '10'], [1, '11'], [2, '12']],
 2: [[0, '20'], [1, '21'], [2, '22']]}

关于python - 使用矩阵行中的键创建字典,格式为 {row :[col, value]},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272642/

相关文章:

python - 比较两个点元组列表的更快方法?

python - 属性错误: module 'keras.backend' has no attribute '_BACKEND'

python - Tensorflow 加权交叉熵损失函数在 DNN 分类器估计器函数中的位置在哪里?

python - 如何连接 Python 和 C 程序?

python - 将计算行添加到多索引的子索引的矢量化方式

python - 返回在字典中的键上循环的第一个值条目的最大值

python - 字典创建中的可选字典项

python - 如何查找嵌套字典中某个键的所有出现,同时还跟踪外部字典键值?

python - 使用基于列表名称的逻辑将列表转换为 DataFrame

python - 如何使用列表推导式在包含字符串和数字的列表中用转义逗号替换逗号