関数で辞書を生成してから、この辞書を返します。正しい形式であるにもかかわらず、返された dict に辞書としてアクセスできないようです。データを文字列としてのみ扱っています。つまり、印刷できますが、d.keys() または d を印刷できません。私は一体何を間違っているのですか?????
str() として出力されたときのデータ
{1: '214902885,214902909'、2: '214902910,214902934'、3: '214902935,214902959'、4: '214902960,214902984 : '214903035,214903059', 8: '214903060,214903084', 9: '214903085,214903109', 10: '214903110,214903139'}
d.items() または d.keys() を出力しようとするとエラーが発生する
print bin_mapping.keys()
AttributeError: 'str' オブジェクトに属性 'keys' がありません
関数から dict を返したら、それを辞書として再定義する必要がありますか? 私は非常にイライラしているので、本当に助けていただければ幸いです:/
ありがとう、
ここに示唆されているように、コードは次のとおりです.最初に辞書を返すために呼び出している関数..
def models2bins_utr(id,type,start,end,strand):
''' chops up utr's into bins for mC analysis'''
# first deal with 5' UTR
feature_len = (int(end) - int(start))+1
bin_len = int(feature_len) /10
if int(feature_len) < 10:
return 'null'
#continue
else:
# now calculate the coordinates for each of the 10 bins
bin_start = start
d_utr_5 = {}
d_utr_3 = {}
for i in range(1,11):
# set 1-9 first, then round up bin# 10 )
if i != 10:
bin_end = (int(bin_start) +int(bin_len)) -1
if str(type) == 'utr_5':
d_utr_5[i] = str(bin_start)+','+str(bin_end)
elif str(type) == 'utr_3':
d_utr_3[i] = str(bin_start)+','+str(bin_end)
else:
pass
#now set new bin_start
bin_start = int(bin_end) + 1
# now round up last bin
else:
bin_end = end
if str(type) == 'utr_5':
d_utr_5[i] = str(bin_start)+','+str(bin_end)
elif str(type) == 'utr_3':
d_utr_3[i] = str(bin_start)+','+str(bin_end)
else:
pass
if str(type) == 'utr_5':
return d_utr_5
elif str(type) == 'utr_3':
return d_utr_3
関数を呼び出して辞書にアクセスしようとしています
def main():
# get a list of all the mrnas in the db
mrna_list = get_mrna()
for mrna_id in mrna_list:
print '-----'
print mrna_id
mrna_features = features(mrna_id)
# if feature utr, send to models2bins_utr and return dict
for feature in mrna_features:
id = feature[0]
type = feature[1]
start = feature[2]
end = feature[3]
assembly = feature[4]
strand = feature[5]
if str(type) == 'utr_5' or str(type) == 'utr_3':
bin_mapping = models2bins_utr(id,type,start,end,strand)
print bin_mapping
print bin_mapping.keys()