Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python dict中打印键值时出错:字符串索引必须是整数_Python_Json_Dictionary_Key Value - Fatal编程技术网

在python dict中打印键值时出错:字符串索引必须是整数

在python dict中打印键值时出错:字符串索引必须是整数,python,json,dictionary,key-value,Python,Json,Dictionary,Key Value,我试图分别访问python字典中的所有键和值。数据是excel格式的,所以我把它转换成了字典。在tower.json文件中,我得到的输出如下: [{"Item": "LD1C", "Rel": "40410"}, {"Item": "LD1D", "Rel": "40411"}, …..}] 如何分别打印各种项目和rels import xlrd from collections import OrderedDict import json wb = xlrd.open_workbook(r

我试图分别访问python字典中的所有键和值。数据是excel格式的,所以我把它转换成了字典。在
tower.json
文件中,我得到的输出如下:

[{"Item": "LD1C", "Rel": "40410"}, {"Item": "LD1D", "Rel": "40411"}, …..}]
如何分别打印各种
项目
rels

import xlrd
from collections import OrderedDict
import json

wb = xlrd.open_workbook(r'C:\Users\eumukar\Desktop\test data.xlsx')
sh = wb.sheet_by_index(0)

tower_list = []

for rownum in range(1, sh.nrows):
    tower = OrderedDict()
    row_values = sh.row_values(rownum)
    tower['Item'] = row_values[0]
    tower['EUtranCellRelation'] = row_values[1]

    tower_list.append(tower)


dat = json.dumps(tower_list)

with open(r'C:\Users\eumukar\Desktop\tower.json', 'w') as f:
    f.write(dat)
在尝试打印密钥/项目时,我写了这篇文章并得到一个错误:

for i in dat:
    print(i,dat[i])

 1 for i in dat:
----> 2     print(i,dat[i])
TypeError: string indices must be integers

错误的原因是没有枚举对象意味着它没有索引 试试下面的代码

for i in enumerate(dat):
    print(i,dat[i])

有关更多详细信息,请访问为什么要访问
dat[i]
?迭代器不会生成范围索引,而是生成值。所以
i
不是索引,而是实际值

此外,
dat
在这里是一个字符串,迭代字符串会产生单个字符(作为字符串),为什么要这样做


PS:当使用文本模式IO(
open
而不使用
'b'
标志)时,您确实希望明确地提供
编码
参数,以避免不好的意外情况。

json.dumps
返回字符串
json。dumps
将为您提供strUse-tower-json来解析相同的错误,但我会检查出来。谢谢