我有一个带有列表的变量
list1 = [{u'key': 1, u'doc_count': 17804}]
[{u'key': u'01', u'doc_count': 516}, {u'key': u'10', u'doc_count': 368}, {u'key': u'50', u'doc_count': 156}, {u'key': u'02', u'doc_count': 116}]
[{u'key': u'40', u'doc_count': 1144},{u'key': u'4P', u'doc_count': 127}]
[u'key': 0, u'doc_count': 16342}, {u'key': 1, u'doc_count': 1462}]
我想像这样访问所有元素:
{u'key': 1, u'doc_count': 17804}
{u'key': u'01', u'doc_count': 516}
{u'key': u'10', u'doc_count': 368}
{u'key': u'50', u'doc_count': 156}
{u'key': u'02', u'doc_count': 116}
{u'key': u'40', u'doc_count': 1144}
{u'key': u'4P', u'doc_count': 127}
{u'key': 0, u'doc_count': 16342}
{u'key': 1, u'doc_count': 1462}
但是我只能像
那样访问每个列表的第一个元素list1[0] =
{u'key': 1, u'doc_count': 17804}
{u'key': u'01', u'doc_count': 516}
{u'key': u'40', u'doc_count': 1144}
{u'key': 0, u'doc_count': 16342}
我无法访问这些列表的第二,第三等元素。 我尝试使用list [1],但出现索引错误。
答案 0 :(得分:0)
我认为您错误地定义了列表列表,这就是为什么出现错误的原因。除此之外,您还缺少字典的大括号,我认为这是一个错字。
list1 = [{u'key': 1, u'doc_count': 17804}]
#####################THIS LIST ENDS HERE ^
#all below lines are not considered
[{u'key': u'01', u'doc_count': 516}, {u'key': u'10', u'doc_count': 368}, {u'key': u'50', u'doc_count': 156}, {u'key': u'02', u'doc_count': 116}]
[{u'key': u'40', u'doc_count': 1144},{u'key': u'4P', u'doc_count': 127}]
[{u'key': 0, u'doc_count': 16342}, {u'key': 1, u'doc_count': 1462}]
#You only have one item in list1 so you will get an error
#lets now make it a proper list of lists
list1 = [ #<see this open brackets?
[{u'key': 1, u'doc_count': 17804}],
[{u'key': u'01', u'doc_count': 516}, {u'key': u'10', u'doc_count': 368}, {u'key': u'50', u'doc_count': 156}, {u'key': u'02', u'doc_count': 116}],
[{u'key': u'40', u'doc_count': 1144},{u'key': u'4P', u'doc_count': 127}],
[{u'key': 0, u'doc_count': 16342}, {u'key': 1, u'doc_count': 1462}]
] #it ends here
#python 2.7x
for sublist in list1:
for d in sublist:
print(d)
#print all of the dicts - python 3.x
#[print(dict) for sublist in list1 for dict in sublist]
输出
{'key': 1, 'doc_count': 17804}
{'key': '01', 'doc_count': 516}
{'key': '10', 'doc_count': 368}
{'key': '50', 'doc_count': 156}
{'key': '02', 'doc_count': 116}
{'key': '40', 'doc_count': 1144}
{'key': '4P', 'doc_count': 127}
{'key': 0, 'doc_count': 16342}
{'key': 1, 'doc_count': 1462}
答案 1 :(得分:0)
在您的代码中,您有4个独立列表(包含字典),第一个具有名称list1
,而其他没有名称。
list1
列表中只有 1个元素(一个字典),因此它的唯一有效索引是0
-list1[0]
是有效的,但是{ {1}}不存在,因为这样的元素不存在。
您可能希望将所有这些列表连接起来,所以快速的解决方法是在前三行后加上
list[1]
:
+ \
(为了便于阅读,我也缩进了最后三行),但是PEP8 - Style guide for Python Code更喜欢写成与
相同list1 = [{u'key': 1, u'doc_count': 17804}] + \
[{u'key': u'01', u'doc_count': 516}, {u'key': u'10', u'doc_count': 368}, {u'key': u'50', u'doc_count': 156}, {u'key': u'02', u'doc_count': 116}] + \
[{u'key': u'40', u'doc_count': 1144},{u'key': u'4P', u'doc_count': 127}] + \
[u'key': 0, u'doc_count': 16342}, {u'key': 1, u'doc_count': 1462}]
(在括号中避免使用行连续符号list1 = ([{u'key': 1, u'doc_count': 17804}]
+ [{u'key': u'01', u'doc_count': 516}, {u'key': u'10', u'doc_count': 368}, {u'key': u'50', u'doc_count': 156}, {u'key': u'02', u'doc_count': 116}]
+ [{u'key': u'40', u'doc_count': 1144},{u'key': u'4P', u'doc_count': 127}]
+ [u'key': 0, u'doc_count': 16342}, {u'key': 1, u'doc_count': 1462}])
,并且使用前缀运算符\
。)
其他选择是删除除第一个和最后一个方括号外的所有方括号,并在前三行末尾添加逗号:
+
在这种情况下,也不需要行继续符号list1 = [{u'key': 1, u'doc_count': 17804},
{u'key': u'01', u'doc_count': 516}, {u'key': u'10', u'doc_count': 368}, {u'key': u'50', u'doc_count': 156}, {u'key': u'02', u'doc_count': 116},
{u'key': u'40', u'doc_count': 1144},{u'key': u'4P', u'doc_count': 127},
u'key': 0, u'doc_count': 16342}, {u'key': 1, u'doc_count': 1]
。