如何有效地从Python中值为2D列表的字典中提取列中的所有元素?
我有一本字典,它的值是列表的列表如何有效地从Python中值为2D列表的字典中提取列中的所有元素?,python,algorithm,dictionary,multidimensional-array,Python,Algorithm,Dictionary,Multidimensional Array,我有一本字典,它的值是列表的列表 mydict = { "A" : [["gactacgat", "IE"],["gactacgat", "IE"]], "G" : [["ggctacgat", "EI"],["gactacgat", "IE"]], "C" : [["gcctacgat", "N"],["gactacgat", "IE"]], "T" : [["gtctacgat", "IE"],["gactacgat", "IE"]] } 我试图创建一个列表,其中包含这些2D列表第二列中的
mydict = {
"A" : [["gactacgat", "IE"],["gactacgat", "IE"]],
"G" : [["ggctacgat", "EI"],["gactacgat", "IE"]],
"C" : [["gcctacgat", "N"],["gactacgat", "IE"]],
"T" : [["gtctacgat", "IE"],["gactacgat", "IE"]]
}
我试图创建一个列表,其中包含这些2D列表第二列中的所有元素。
这就是我正在做的:
mylist = []
for key in mydict.keys():
for row in mydict[key]:
mylist.append(row[1])
有没有比我所做的更有效的方法从这些列表中的所有列表中访问特定索引
(如果我的措辞不好,我深表歉意,如果您对更好的标题问题有任何反馈,我将不胜感激)列表理解是您的朋友:
mylist = [row[1] for value in mydict.values() for row in value]
这使用了一个嵌套循环,但可能优化得更好一些。此外,使用
dict.values
可以在外循环的每次迭代中为您保存一个键查找,并以与键相同的顺序返回项。您的措辞很好,最重要的是,它与您的代码匹配。如果OP值是大小为2的列表列表,则索引有助于mylist=[];对于mydict.values()中的val:mylist.append(val[0][1]);mylist.append(val[1][1])
。正确,尽管我认为一般来说这不是一个安全的假设。您的答案适用于可变长度。通用解决方案有时效率较低。如果OP提到了一些限制,比如每个键的列表大小为2等,那么我认为我们可以真正提出一种有效的方法,我想是的。同意。此时,OP可能应该重新考虑其整个数据结构,但是的,直接访问固定数量的行可以减少循环开销。