0

私はこれを理解することができませんでした、私は問題が私がリストのリストを作る方法にあるかもしれないと思います。誰か助けてもらえますか?ありがとう!

私の望む結果は

codondict = {'A':['GCT'、'GCC'、'GCA'、'GCG']、'C':['TGT'、'TGC']、&c

しかし、私が得るものは次のとおりです。

{'A':'A'、'C':'C'、&c。

これが私の端末です:

A = ['GCT'、'GCC'、'GCA'、'GCG']

C = ['TGT'、'TGC']

D = ['GAT'、'GAC']

E = ['GAA'、'GAG']

F = ['TTT'、'TTC']

G = ['GGT'、'GGC'、'GGA'、'GGG']

H = ['CAT'、'CAC']

I = ['ATT'、'ATC'、'ATA']

K = ['AAA'、'AAG']

L = ['TTA'、'TTG'、'CTT'、'CTC'、'CTA'、'CTG']

M = ['ATG']

N = ['AAT'、'AAC']

P = ['CCT'、'CCC'、'CCA'、'CCG']

Q = ['CAA'、'CAG']

R = ['CGT'、'CGC'、'CGA'、'CGG'、'AGA'、'AGG']

S = ['TCT'、'TCC'、'TCA'、'TCG'、'AGT'、'AGC']

T = ['ACT'、'ACC'、'ACA'、'ACG']

V = ['GTT'、'GTC'、'GTA'、'GTG']

W = ['TGG']

Y = ['TAT'、'TAC']

アミノ酸=['A'、'C'、'D'、'E'、'F'、'G'、'H'、'I'、'K'、'L'、'M'、'N' 、'P'、'Q'、'R'、'S'、'T'、'V'、'W'、'Y']

コレクションからimportdefaultdict

codondict = defaultdict(list)

アミノ酸のiの場合:

... for j in i :(リスト(i)のjについても試してみました)

... ... codondict [i] =j..。

コドンディクト

defaultdict(、{'A':'A'、'C':'C'、'E':'E'、'D':'D'、'G':'G'、'F':'F '、' I':' I'、' H':' H'、' K':' K'、' M':' M'、' L':' L'、' N':' N'、 'Q':'Q'、'P':'P'、'S':'S'、'R':'R'、'T':'T'、'W':'W'、'V ':' V'、' Y':' Y'})

4

4 に答える 4

3

あなたはこれを試すことができます:

condondict= dict(A=['GCT','GCC','GCA','GCG'],
C=['TGT','TGC'],
D=['GAT','GAC'],
E=['GAA','GAG'],
F=['TTT','TTC'],
G=['GGT','GGC','GGA','GGG'],
H=['CAT','CAC'],
I=['ATT','ATC','ATA'],
K=['AAA','AAG'],
L=['TTA','TTG','CTT','CTC','CTA','CTG'],
M=['ATG'],
N=['AAT','AAC'],
P=['CCT','CCC','CCA','CCG'],
Q=['CAA','CAG'],
R=['CGT','CGC','CGA','CGG','AGA','AGG'],
S=['TCT','TCC','TCA','TCG','AGT','AGC'],
T=['ACT','ACC','ACA','ACG'],
V=['GTT','GTC','GTA','GTG'],
W=['TGG'],
Y=['TAT','TAC'])

使用する理由defaultdict()は、KeyErrorを発生させずにディクショナリ値へのアクセス/作成を許可するか、次の形式を使用してバイパスするためです。

if key not in mydict.keys():
    mydict[key] = []
mydict[key].append(something)

新しいキーを動的に作成しない場合は、実際にを使用する必要はありませんdefaultdict()

また、キーがすでにアミノ酸を表している場合は、キー自体を繰り返し処理します。

for aminoacid, sequence in condondict.iteritems():
    # do stuff with with data...
于 2012-07-20T00:47:41.493 に答える
1

必要なことを行う別の方法は、locals()関数を使用することです。この関数は、変数名をキーとして、その内容を値として、ローカルスコープの変数のセット全体を含むディクショナリを返します。

for i in aminoacids:
    codondict[i] = locals()[i]

Aしたがって、たとえば、次を使用してリストを取得できますlocals()['A']

于 2012-07-20T00:56:32.837 に答える
0

これは一種の冗長であり、変数の名前'A'とその値を混同していますA。あなたが持っているものを維持する:

aminoacids = { 'A': A, 'C': C, 'D': D ... }

あなたが求める辞書を手に入れるべきです:

{ 'A' : ['GCT', 'GCC', 'GCA', 'GCG'], 'C' : ['TGT', 'TGC'], ... }

ここで、キーの順序は、辞書が順序付けられていないため、返されるもの'A'ではない場合があります。'C'

于 2012-07-20T00:43:06.287 に答える
0

組み込みのglobals()を使用して、理解度を決定することもできます。

codondict = {k:globals()[k] for k in aminoacids}

stummjrのソリューションのように、globals()ではなくlocals()に依存することをお勧めしますが、dictの理解を直接使用することはできません。

codondict = dict([(k,locals()[k]) for k in aminoacids])

ただし、これは可能です。

loc = locals()
codondict = {k:loc[k] for k in aminoacids}

アミノ酸リストまたはアミノ酸の割り当てを動的に変更する場合は、次のようなより怠惰なものを使用することをお勧めします。

codondict = lambda: {k:globals()[k] for k in aminoacids}

これで、いつでも更新された辞書を使用できますが、呼び出し可能になっているため、実際の辞書を取得するには、codondict [x]の代わりにcodondict()[x]を使用します。このようにして、codondictのさまざまな履歴バージョンを比較する必要がある場合に備えて、hist = codondict()のようにdict全体を格納できます。これはインタラクティブモードで役立つほど小さいですが、大きなコードではお勧めしません。

于 2012-07-22T07:23:37.710 に答える