Python 列表索引超出范围

Python 列表索引超出范围,python,Python,我有一个单词对的列表,我正试图将它们作为NetworkX阅读的数据。脚本的一部分是迭代这些对以将它们映射到id号,请参见下面的代码。这段代码抛出了一个索引超出范围的错误,我需要通过它。这里出了什么错 coocs = [['parttim;work'], ['parttim;work'],['parttim;visit'], ['parttim;site'], ['parttim;uncl'], ['parttim;home'], ['parttim;onlin']] unique_coocs =

我有一个单词对的列表,我正试图将它们作为NetworkX阅读的数据。脚本的一部分是迭代这些对以将它们映射到id号,请参见下面的代码。这段代码抛出了一个索引超出范围的错误,我需要通过它。这里出了什么错

coocs = [['parttim;work'], ['parttim;work'],['parttim;visit'], ['parttim;site'], ['parttim;uncl'], ['parttim;home'], ['parttim;onlin']]
unique_coocs = list(set([row[0] for row in coocs]))  # remove redundance
ids = list(enumerate(unique_coocs))  # creates a list of tuples with unique ids and their names for each word in the network
keys = {name: i for i, name in enumerate(unique_coocs)}  # creates a dictionary(hash map) that maps each id to the words
links = []  # creates a blank list

for row in coocs:  # maps all of the names in the list to their id number
    try:
        links.append({keys[row[0]]: keys[row[1]]})
    except:
        links.append({row[0]: row[1]})
第行出错,因为lenrow在这里始终为1,所以不能使用索引号1,即第[1]行

更正的代码是

for row in coocs:
    links.append(row[0]+':'+str(keys[row[0]]))
print links
输出:

['parttim;工作:2','parttim;工作:2','parttim;访问:3','parttim;站点:4','parttim;uncl:0','parttim;主页:5','parttim;在线:1']

这个很好用

 for row in coocs:  # maps all of the names in the list to their id number
     links.append({row[0]: keys[row[0]]})

>>> links
[{'parttim;work': 2}, {'parttim;work': 2}, {'parttim;visit': 3}, {'parttim;site': 4}, {'parttim;uncl': 0}, {'parttim;home': 5}, {'parttim;onlin': 1}]

错误在哪一行?This:links.append{row[0]:row[1]}给出完整的错误消息会有所帮助。