在Python中有效地迭代字典

时间:2015-04-02 13:32:13

标签: python dictionary

所以问题就在这里,我导入了一个6000到12000个密钥的字典。然后使用嵌套for算法将它们分组到另一个字典内的列表中。我使用以下代码检查密钥是否在字典中:

for key in range(sizeOfOriginalKeys):
    if key in key_data:

正如您可能想象的那样,由于排序算法相当复杂,因此这是永远的。我想只遍历' key_data'中的密钥,而不进行1000到11999次检查,如果字典中有该密钥。有没有办法列出当前的密钥?然后迭代它们?或者至少比我目前正在做的更有效率?

凯文的建议后的现行守则:

for key in key_data:
    currentKey = key_data[key].name
    if key_data[currentKey].prefList[currentPref] == currentGroup
        key_data[currentKey].currentScore = getDotProduct()
        group_data[currentGroup].keyList.append(key_data[currentKey])
        group_data[currentGroup].sortKeys()
        del key_data[currentKey]

键名是整数。 在排序算法结束时,我删除了密钥,如果它已被分类到一个组中。 现在我收到一个错误:字典在迭代期间改变了大小。

思考?

2 个答案:

答案 0 :(得分:3)

你太努力了:

for key in key_data:

答案 1 :(得分:1)

你可以尝试

for key,value in key_data.items() :
    print key
    print value

您可以在不调用key_data [key]

的情况下访问值