Как сбросить / добавить все значения dict в список, если ключ является кортежем? - PullRequest
0 голосов
/ 22 марта 2011

У меня есть запрос с именами модулей и тестовыми именами в списке:

dictA = {('unit1', 'test1'): 10,  ('unit2', 'test1'): 78,  ('unit2', 'test2'): 2, ('unit1', 'test2'): 45}  
units = ['unit1', 'unit2']  
testnames = ['test1','test2'] 

Как добавить все значения, скажем, test1 в список? т.е.

temp = [10,78] # test1 values
temp2 = [2,45] # test2 values

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

Похоже, вы спрашиваете о списках .

[v for k,v in dictA.iteritems() if k[1] == 'test1']

Даст вам:

[10, 78]

Аналогично:

>>> [v for k,v in dictA.iteritems() if k[1] == 'test2']
[2, 45]

Теперь, когда key является кортежем, мы сослались на элемент в if -пункте.

1 голос
/ 22 марта 2011

Я бы включил диктату в словари словарей - либо путем преобразования, либо лучше, построив его в этой форме

dictA = {'unit1':{'test1': 10, 'test2': 2}, 'unit2': {'test1': 78, 'test2': 45}}

Тогда

temp = [dictA[x]['test1'] for x in units] 
temp2 = [dictA[x]['test2'] for x in units]
1 голос
/ 22 марта 2011

temp = [ j for i, j in dictA.iteritems() if "test1" in i ]

...