0

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

[
{'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'})

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

任何帮助是极大的赞赏。

4

2 回答 2

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']为 split on 的第一个值,(如果不存在逗号,它可能只是一个元素)。然后字典用一系列键值对更新,这些键值对是从其余的单词及其索引(从 1 开始)生成的。

于 2013-10-29T18:18:38.607 回答
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})

我会更改 dict 和 list 的名称。我留下了它们,以便它们与您的示例代码匹配。

于 2013-10-29T18:20:33.300 回答