Python:有条件地在字典列表中创建新密钥

时间:2013-10-29 18:14:43

标签: python dictionary

我有一个看起来像这样的词典列表:

[
{'stim': 'I', 'condition1': 0, 'condition2': 1, 'condition3': 0},
{'stim': 'nev,er.', 'condition1': 0, 'condition2': 1, 'condition3': 0},
{'stim': 'he,si,ta,te', 'condition1': 0, 'condition2': 1, 'condition3': 1},
{'stim': 'while', 'condition1': 0, 'condition2': 1, 'condition3': 1},
{'stim': 'dri,ving', 'condition1': 0, 'condition2': 1, 'condition3': 0}, etc.]

我想要遵守的是以下结果:

[
    {'stim': 'I', 'condition1': 0, 'condition2': 1, 'condition3': 0},
    {'stim': 'nev', 'stim1':'er.','condition1': 0, 'condition2': 1, 'condition3': 0},
    {'stim': 'he', stim1:'si', stim2:'ta', stim3:'te.', 'condition1': 0, 'condition2': 1, 'condition3': 1},
    {'stim': 'while', 'condition1': 0, 'condition2': 1, 'condition3': 1},
    {'stim': 'dri','stim1': 'ving.', 'condition1': 0, 'condition2': 1, 'condition3': 0}, etc.]

只有当一个单词用逗号值连字时,我才需要代码来创建与(剩余的)音节值组合的附加键。我对编程很新,而且我没有比这更进一步:

for dict in list:
    if "," in (dict['stim']):
        dict.update({'word1':'syllable'})

我不知道如何添加所需数量的密钥。我也没有成功获得相应值的实际音节。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这应该这样做:

for d in inputlist:
    words = d['stim'].split(',')
    d['stim'] = words[0]
    d.update(('stim{}'.format(i), word) for i, word in enumerate(words[1:], 1))

这会将d['stim']替换为,上拆分的第一个值(如果没有逗号,则可能只是一个元素)。然后用一系列键值对更新字典,从其余单词及其索引(从1开始)生成。

答案 1 :(得分:0)

for dict in list:
    if "," in (dict['stim']):
        result = dict['stim'].split(',') # get a list of individual syllables
        dict['stim'] = result.pop(0) # store the first syllable in the existing dict key
        for index, syllable in enumerate(result, 1): #for every other syllable update dict
            dict['stim'+str(index)] = syllable})

我会改变字典和列表的名称。我离开了他们,所以他们匹配你的示例代码。