2016-11-21 93 views
0

我已经初始化一个字典,像这样:在Python字典追加不同的项目,不同的密钥

dic = {'A':[],'B':[],'C':[]} 

我的目标是通过附加一些值,像这样以填补词典:

{'A': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
'B': [0, 2, 4, 6, 8, 10, 12, 14, 16, 18], 
'C': [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]} 

方式我能够这样做是通过使用以下几行代码:

for j in range(0,10): 
    dic['A'].append(j) 
    dic['B'].append(j*2) 
    dic['C'].append(j*3) 

我的目标是做这样的程序以一种聪明和更优雅的方式。 我想这样的:

dic[['A','B','C']].append(j,j*2,j*3) 

你对如何做到这一点任何想法?

注意:我的例子可能会误导,我很抱歉。我追加j,j * 2和j * 3的原因只是为了示范目的;附加值可能非常通用,例如字母或其他随机数字。

+1

'(dic [x] .append(j ** i)对于j在范围内(10)对于i,x在枚举中(['A','B','C']))'意味着你只需要'j'一次范围 –

+0

你可以给另一个字母例子吗? –

+0

当然,它来了 –

回答

5

下面将有预期的结果:

keys = ['A', 'B', 'C'] 

print({ 
    key: range(0, 10 * i, i) 
    for i, key in enumerate(keys, 1) 
}) 

结果:

{ 
    'A': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
    'C': [0, 3, 6, 9, 12, 15, 18, 21, 24, 27], 
    'B': [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 
} 
+0

虽然你已经回答了OP的问题。我必须认为这个属于明确的类别比隐含类型更好。就我个人而言,我认为运营商应该坚持他的解决方案。虽然在这方面的荣誉,我想不出任何东西。 – Hoopdady

3

为了实现你想要什么,你可以创建一个字典理解表达:

keys = ['A', 'B', 'C'] 

my_dict = {key: [j*i for j in range(10)] for i, key in enumerate(keys, 1)} 

其中my_dict将保留值:

{ 
    'A': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 
    'B': [0, 2, 4, 6, 8, 10, 12, 14, 16, 18], 
    'C': [0, 3, 6, 9, 12, 15, 18, 21, 24, 27], 
} 
相关问题