On 04.06.2014 12:29, jarod...@libero.it wrote:
Dear all thanks for your suggestion!!!
In [4]: with open("prova.csv") as p:
for i in p:
lines =i.rstrip("\n").split("\t")
line = (lines[0],lines[1])
...: diz.setdefault(line,set()).add(lines[2])
...:
In [5]: diz
Out[5]:
{('program1', 'sample1'): {'TP53'},
('program1', 'sample2'): {'ATF3', 'PRNP'},
('program2', 'sample1'): {'PRNP', 'TP53'},
('program2', 'sample2'): {'TLK1', 'TRIM32'},
('programs ', 'sample'): {'gene'}}
So what I want to do is to use intersect between the keys recursively:
s = diz[('program2', 'sample1']
....:
....:
KeyboardInterrupt
In [14]: s = diz[('program2', 'sample1')]
In [15]: s
Out[15]: {'PRNP', 'TP53'}
In [16]: a
Out[16]: {'ATF3', 'PRNP'}
In [17]: s.inte
s.intersection s.intersection_update
In [17]: s.intersection(a)
Out[17]: {'PRNP'}
How can Have a intersect of all my dictionary and from ('program1', 'sample1')
vs ('program1', 'sample2')...
I want to count how many genes are common
Thanks in advance for your help!
So you know the basic method set.intersection (or its operator form &).
The rest depends on which intersections you're interested in.
For all pair-wise comparisons, you can use nested for loops across all
key, value pairs, like so:
for k1, v1 in your_dict.iteritems():
for k2, v2 in your_dict.iteritems():
do_something()
For any kind of systematic comparison, it's probably better to build a
set of all programs and one of all samples during file parsing, in
addition to the dict, then use their values for accessing the dict.
Best, Wolfgang
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor