【问题标题】:Split dictionaries in list into 2D array将列表中的字典拆分为二维数组
【发布时间】:2021-02-02 17:00:33
【问题描述】:

我有一个要拆分的字典列表,以便它变成一个二维数组。列表中的 2 个字典的示例是:

{"house_size": 93.0, "build_year": 2002.0, "house_color": 3, "price": 2498.0}
{"house_size": 75.0, "build_year": 1954.0, "house_color": 1, "price": 2953.0}

我想用 "," 分割它,这样数组就会有 4 列,其中所有的列都是 1 列。

上半部分正在加载 json 文件。

import os
import json
import numpy
def load_line_json(path): 
    dataset = []
    with open(path, "r") as fp:
        for line in fp:
            example = json.loads(line)
            dataset.append(example)
    
    print("loaded dataset, with {} examples from: {}.".format(len(dataset), path))
    return dataset
        
path_to_dataset = "/Users/PathToFile"
path_to_test = os.path.join(path_to_dataset, "test.json")

assert os.path.isfile(path_to_test)
 
test_dataset = load_line_json(path_to_test)
dat = []
for string in test_dataset:
    dat.append([string for string in string])
print(dat[0])
print("-----------------------\n")
print(test_dataset[0])
print(type(test_dataset))

data = np.array(dat)
data1 = np.array(test_dataset)

print(data)

print("Shape is: ", data.shape)
print("Shape is: ", data1.shape)

我尝试将其拆分如下所示,但它删除了: 之后的值,因此它只是“'house_size'”而不是“'house_size': 93.0”,就像我想要的那样。我把它做成一个数组,形状应该是 (rows, 4) 而不是 (rows,) 在我分裂之前。基本上我想用逗号分隔它。

dat = []
for string in test_dataset:
    dat.append([string for string in string])

【问题讨论】:

  • dataset 是字典列表,而不是字符串列表。
  • 好的,谢谢,我只是假设是字符串,我将编辑我的问题
  • 使用string.entries() 获取键和值的序列。
  • 顺便说一句,像这样重用相同的 string 变量真的很混乱。
  • dat = [list(d.values()) for d in test_dataset]?

标签: python arrays string list numpy


【解决方案1】:

也许,这就是你要找的东西

dic = {"house_size": 93.0, "build_year": 2002.0, "house_color": 3, "price": 2498.0}
list(dic.items())

这将产生:

[('house_size', 93.0), ('build_year', 2002.0), ('house_color', 3), ('price', 2498.0)]

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2020-11-18
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多