我想访问公司名单中的数据,这是在字典中,实际上是一个列表。在运行这段代码时,我得到了"TypeError:列表索引必须是整数或片“。J循环接受项目中的第一个列表,并使用它进行迭代,直到“companies”中的每个元素都被覆盖为止,但是我不明白为什么它不能工作。任何建议都会很有帮助
l= [{ "id":"a","name":"rocky","companies": ["1","2","3"], "data":"", "data2": {"x","y"} },
{"id":"b","name":"duster","companies": ["4","5","6"], "data":"", "data2": {"h","p"} } ]
for i in l:
name=i['name']
id=i['id']
for j in l[i]['companies']:
cmp= j
Output:
id name companies
a rocky 1
a rocky 2
a rocky 3
b rocky 4
b duster 5
b duster 6 发布于 2020-10-15 09:07:16
您正在尝试使用列表项而不是索引来索引您的循环。例如,使用这个:
for idx, i in enumerate(l):
name=i['name']
id=i['id']
for j in l[idx]['companies']:
cmp= j现在,idx是索引列表"l“所需的整数。
发布于 2020-10-15 09:06:34
此错误是因为您正在使用列表中的项,如索引for j in l[i]['companies']。这里,i不是索引,而是项本身。
您可以通过使用i来获得类似于for j in i['companies']的companies来修复它。
获得结果的另一种方法是使用list-comprehension和itemgetter
from operator import itemgetter
items = [itemgetter('id', 'name', 'companies')(x) for x in l]
result = [tuple(zip([a]*len(c), [b]*len(c), c)) for a, b, c in items]发布于 2020-10-15 09:28:15
代码中有两个问题。第一个输入list。第二,代码中的语法错误。
for i in l:
name=i['name']
id=i['id']
for j in l[i]['companies']:
cmp= j在这里,i本身就是一个字典,您不能将它用于解析list l和inner for lop l[i]['companies']。这就是您获得错误的原因:"TypeError: list indices must be integers or slices"
l**:** 校正输入列表
l = [{ "id":"a","name":"rocky","companies": ["1","2","3"], "data":"", "data2": {"x","y"}} ,{"id":"b","name":"duster","companies": ["4","5","6"], "data":"", "data2": {"h","p"} } ]修改代码
count = 0
print("id name companies")
for i in l:
name=i['name']
id=i['id']
#print(l[count])
for j in l[count].get("companies"):
cmp = j
print("{} {} {}".format(id, name, cmp))
count += 1输出
id name companies
a rocky 1
a rocky 2
a rocky 3
b duster 4
b duster 5
b duster 6https://stackoverflow.com/questions/64368126
复制相似问题