需要将数组转换为字典

时间:2019-03-29 21:34:36

标签: python arrays dictionary

我获得了要导入的数据,并将其作为数组导入,但是我需要将其作为字典。本质上,它只是作为数组中的字典导入的,我不知道如何使其仅作为数组。

我尝试用''替换'[',但这没有用,我相信还有更好的方法

我以这种方式导入数据

stock = np.loadtxt("wh_stock.dat",dtype = dict)

结果是:

['{"01":' '115,' '"02":' '34,' '"03":' '350,' '"04":' '273,' '"05":'
 '922,' '"06":' '844,' '"07":' '575,' '"08":' '523,' '"09":' '179,'
 '"10":' '676,' '"11":' '825,' '"12":' '693,' '"13":' '632,' '"14":'
 '195,' '"15":' '692,' '"16":' '956,' '"17":' '619,' '"18":' '588,'
 '"19":' '580,' '"20":' '648}']   

我希望它是:

 {"01": 115, "02": 34, "03": 350, "04": 273, "05":
     922, "06": 844, "07": 575, "08": 523, "09": 179,
     "10": 676, "11": 825, "12": 693, "13": 632, "14":
     195, "15": 692, "16": 956, "17": 619, "18": 588,
     "19": 580, "20": 648}

.dat文件中的原始数据:

{“ 01”:115,“ 02”:34,“ 03”:350,“ 04”:273,“ 05”:          922,“ 06”:844,“ 07”:575,“ 08”:523,“ 09”:179,          “ 10”:676,“ 11”:825,“ 12”:693,“ 13”:632,“ 14”:          195,“ 15”:692,“ 16”:956,“ 17”:619,“ 18”:588,          “ 19”:580,“ 20”:648}
也许有更好的导入方法,但这就是我所教的全部

2 个答案:

答案 0 :(得分:2)

python json库可以帮助您:

已更新

stock实际上被保存为一种用空格分隔的数据帧, NOT 只是一个字符串(它看起来确实如此)。话虽如此,这是一个非常小的数据集,因此您可以将其连接在一起以将其视为字符串:

import json

stock = np.loadtxt("wh_stock.dat", dtype=list)
data_str = "".join(stock)
json.loads(data_str) #json.loads will ensure its a dict object

另外,如果您确实希望像fuglede所指出的那样使用整数键,则可以键入强制转换为dict键:

int_keyed_stock = {int(key): val for key, val in json.loads(data_str).items()}

肯定不是最优雅的解决方案,并且我肯定熊猫可以更好地解决这个问题,但是您拥有的数据集很小,因此无需花钱

答案 1 :(得分:0)

您必须在loadtxt函数中指定数据的结构类型和格式。 '| S4'表示4个字节的字符串。

?lang=de

第一行将字符串作为字节数据加载,例如b'02',您可以使用带有字符集编码的解码功能将它们转换为常规字符串类型。