将值从一个词典列表添加到另一个不相等的词典列表时出现Python错误

时间:2015-04-09 16:52:42

标签: python list dictionary compare

我有一个像这样设置的词典列表(但里面有~11000个词条,都有相同的键)

kept = [{'date': 20150409, 'vel': 62.1, 'H_beg': 110.1}, {'date': 20150409, 'vel': 39.5,....}]

现在,我有另一个列表kept2[],其中一些键应与kept[]中的键值相匹配,但我想要一个额外的键'log_10_m'如果列表中的字典kept[]'vel''date'的值相同,则添加到'H_beg'中的每个字典。

这似乎难以捉摸,但是当我尝试打印出一个列表,显示'log_10_m'kept[]的所有值时,该列表应该刚刚添加到其中的每个字典中,它说KeyError: 'log_10_m'

任何人都可以告诉我为什么以下代码不起作用,如果可能的话,更快的方法,因为每次尝试都需要几分钟。

kept = [{'date': 20150409, 'vel': 62.1, 'H_beg': 110.1},
        {'date': 20150409, 'vel': 39.5,....}]

def compare():
    for row in kept:
        for row2 in kept2:
            if (row['date'] == row2['date'] and
                row['vel'] == row2['vel'] and
                row['H_beg'] == row2['H_beg'] and
                row['H_end'] == row2['H_end']):
                    row['log_10_m'] = row2['log_10_m']
                    break
            else:
                continue

    mass = [row3['log_10_m'] for row3 in kept]
    print '\n'
    print 'mass in kept:'
    print mass

0 个答案:

没有答案