【问题标题】:How to iterate over dictionary items?如何迭代字典项?
【发布时间】:2020-11-14 15:46:27
【问题描述】:

我有一个股票数据字典,如下所示:

{'_id': ObjectId('5ed25b3a4893efeab4cef4b3'),
 'time': 1286699400000.0,
 'open': 1128.0,
 'high': 1128.0,
 'low': 1128.0,
 'close': 1128.0,
 'volume': 100}

并尝试使用以下代码将其转换为数据列表/数组,但它仅适用于 1 项字典。我不知道如何遍历字典?

def dict_to_array(data):
    training_set1 = []
    training_set1.append(data["open"])
    training_set1.append(data["high"])
    training_set1.append(data["low"])
    training_set1.append(data["close"])
    training_set1.append(data["volume"])
    training_set1 = np.array(training_set1).T
    return training_set1

编辑:我喜欢 training_set1 作为结果:

[[o1, h1, l1, c1, v1],
 [o2, h2, l2, c2, v2],
 ...
 [on, hn, ln, cn, vn]]

EDIT2:我在我的代码中添加了 data = data.values(),如下所示:

def dict_to_array(data):
    data = data.values()
    training_set1 = []
    training_set1.append(data["open"])
    training_set1.append(data["high"])
    training_set1.append(data["low"])
    training_set1.append(data["close"])
    training_set1.append(data["volume"])
    training_set1 = np.array(training_set1).T
    return training_set1

但我收到以下错误:

TypeError: 'dict_values' object is not subscriptable

【问题讨论】:

  • print(list(data.values())) 为您提供 dict 的所有值(转换为列表)。这就是你要找的吗?
  • 您可以使用dict.values()获取值,使用dict.items()获取键值对。
  • 这能回答你的问题吗? Iterating over dictionaries using 'for' loops

标签: python arrays list dictionary type-conversion


【解决方案1】:

这是遍历字典的方法,您可以对字典中的每个键使用键 var,而值变量将包含该键各自的值。

dictionary = {'name': "John Doe", 'age': 34, 'company': "abc ltd"}

for key, value in dictionary.items():
    print(f"{key} has {value} in dictionary")

【讨论】:

  • 或:for key in dictionary: print(f"{key} has {dictionary[key]} in dictionary")
【解决方案2】:

她是你如何使用dict.items()list()

dct = {'_id': '5ed25b3a4893efeab4cef4b3',
       'time': 1286699400000.0,
       'open': 1128.0,
       'high': 1128.0,
       'low': 1128.0,
       'close': 1128.0,
       'volume': 100}

def dict_to_array(data):
    return list(data.items())

【讨论】:

    【解决方案3】:

    使用name.values()list(name.values()) 仅获取值,

    使用name.items()list(name.items)) 获取元组列表,其中每个元组是一个键值对(0 个键,1 个值)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 2020-08-09
      • 2021-03-06
      • 1970-01-01
      • 2021-08-26
      相关资源
      最近更新 更多