我收到此错误:

Traceback (most recent call last):
  File "/Users/Rose/Documents/workspace/METProjectFOREAL/src/test_met4.py", line 79, in   <module>
    table_list.append(table_template % art_temp_dict)
KeyError: 'artifact4'

从这个代码:
artifact_groups = grouper(4, html_list, "")

for artifact_group in artifact_groups:
    art_temp_dict={}
     for artifact in artifact_group:
         art_temp_dict["artifact"+str(artifact_group.index(artifact)+1)] = artifact

    table_list.append(table_template % art_temp_dict)

以下是CSV的示例:
“artifact4971.jpg”,“高17 1/2 x 16 1/2 x 5 1/2英寸。(44.5 x 41.9 x 14厘米),“74.51.2648”,“4971”
“artifact4972.jpg”,“总尺寸:5 1/2 x 3 3/4 x 4英寸。(14.0 x 9.5 x 10.2厘米),“74.51.2592”,“4972”
“artifact4973.jpg”,“总尺寸:6 5/8 x 7 1/4 x 1 1/4英寸。(16.8 x 18.4 x 3.2厘米),“74.51.2594”,“4973”
“artifact4974.jpg”,“高5 1/2 x 6 3/4 x 11 3/4英寸。(14 x 17.1 x 29.8厘米),“74.51.2628”,“4974”
“artifact4975.jpg”,“总尺寸:10 1/8 7 7英寸。(25.7厘米),“74.51.2633”,“4975”
“artifact4976.jpg”,“总尺寸:7 1/2 5 11 1/2英寸。(19.1 12.7 29.2厘米),“74.51.2637”,“4976”
“artifact4977.jpg”,“总尺寸:10 1/2 7 8 1/2英寸。(26.7 17.8 21.6厘米),“74.51.2819”,“4977”
“artifact4978.jpg”,“高6 3/8 x 14 1/2 x 5 1/4英寸。(16.2 x 36.8 x 13.3厘米),“74.51.2831”,“4978”
我知道KEYError表示“Atfase4”不存在,但我不知道为什么-我正在从一个大的CSV文件中获取数据,几乎有6000条记录。非常感谢您的建议!

最佳答案

如果您遇到CSV的第四列与前面的一列具有相同的值的情况,index将生成前面的匹配,并且永远不会填充artifact4。改用这个:

 for i, artifact in enumerate(artifact_group):
     art_temp_dict["artifact"+str(i+1)] = artifact

关于python - python字典键错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17053730/

10-11 16:37