【问题标题】:Access multiple values from dictionary vertically垂直访问字典中的多个值
【发布时间】:2021-05-09 14:03:36
【问题描述】:

我必须从字典中垂直获取值。

mydict={'a':[1,2],'b':[3,4],'c':[0,9]}
keys=list(mydict.keys())
values=list(mydict.values())

简单输出

['a', 'b', 'c'] #keys

[[1, 2], [3, 4], [0, 9]] #values

期望的输出:

def fetch_value(mydict):
   ... #do something
   return v1,v2

##output
v1=[1,3,0] 
v2=[2,4,9]

我不想在这里使用任何 for 循环,因为它需要时间,而且我有一个非常大的数据集。请建议任何更快的方法。

【问题讨论】:

  • 对此的每个解决方案都将使用一个循环,无论是显式地还是在引擎盖下。只需使用循环。
  • list(zip(*d.values())) 这应该可以解决问题。但无论您选择哪种方式,都会涉及到一个循环
  • “我不想在这里使用任何 for 循环”你必须隐式或显式地使用。

标签: python arrays list dictionary


【解决方案1】:
mydict={'a':[1,2],'b':[3,4],'c':[0,9]}
print(list(zip(*mydict.values())))

输出

[(1, 3, 0), (2, 4, 9)]

您可以根据需要解压缩结果列表或访问列表元素

【讨论】:

  • 谢谢,这个方法真的比其他方法快。
【解决方案2】:
mydict={'a':[1,2],'b':[3,4],'c':[0,9]}

def fetch_values(dicto):
  n1 = []
  n2 = []
  for i in dicto:
    n1.append(dicto[i][0])
    n2.append(dicto[i][1])
  return (n1,n2)

fetch_values(mydict)

([1, 3, 0], [2, 4, 9])

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • @mightyWOZ 这个“仅链接”如何?答案缺少代码描述,但这不是删除它的理由。 programandoconro 请始终描述您的代码 - 它如何以及为什么解决问题。您的帖子质量将显着提高,您的帖子不会出现在低质量队列中。
  • @Ruli 谢谢你的建议,我会这样开始的。
【解决方案3】:

您可以使用pandas,因为它在管理大数据集时非常有效:

import pandas as pd

mydict={'a':[1,2],'b':[3,4],'c':[0,9]}

df = pd.DataFrame(mydict)

# `values` will give you a numpy array
v1 = df.iloc[0].values
v2 = df.iloc[1].values

【讨论】:

  • 熊猫在这种情况下是矫枉过正的。
  • OP 想要一些对大数据集有效的东西。 Pandas 最适合它
  • OP 所说的是他们不想使用循环,因为他们不合理和错误地担心它们在大型数据集上天生效率低下。所以 pandas 可能适用于他们的整个项目,但是对于这个特定的问题,它是矫枉过正的,因为他们的问题是基于一个错误的前提。
  • 嗯,for 循环的效率确实低于向量化的 numpy 操作。 OP 给了我们一个minimal reproducible example 来展示他想要的结果。他询问如何有效地执行此操作,因为它将应用于大数据集。最后,各种选项可以为 OP(和其他感兴趣的人)提供不同的可能性来解决他们的问题,这是 Python 最大的积极方面之一
  • 另外,如果你要使用 pandas,最好df = pd.DataFrame(columns=['v1', 'v2'], data = mydict.values())。您的示例有一个错误 - v1 和 v2 引用同一行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多