2014-02-16 2 views
0

Сегодня мне нужно заменить ключ dict на значение dict two. У Dict один есть несколько клавиш, и я хочу только заменить ключи, которые соответствуют dict 2. В конце концов, я хочу вернуть диктофон обратно старыми ключами (те, которые не совпадают), и новыми ключами (которые были изменились, когда они совпали)Заменить ключ dict по значению другого dict

Я написал следующий скрипт, но я не получаю выход, поэтому я не уверен, что я делаю это правильно, может кто-нибудь объяснить мне?

Большое спасибо

ERCC = {} 
my_file = open('a.txt') 
for line in my_file: 
    config,name = line.strip().split() 
    ERCC[contig] = name 

RSEM = {} 
names_file = open('b.txt') 
for line in names_file: 
    genes, count = line.strip().split() 
    RSEM[gene] = count 

def convert(RSEM,ERCC): 
    for key, value in RSEM.items(): 
     for keys, values in ERCC.items(): 
      if keys == key: 
       RSEM[key] = values 
    return RSEM 
    print RSEM 

convert(RSEM, ERCC) 
+0

соответствует значению или ключу? – thefourtheye

+0

нет вывода: инструкция 'print' находится ниже инструкции' return'; никогда не исполнялся. – falsetru

+0

Правда, поэтому, если я напишу RSEM после строки преобразования (RSEM, ERCC), он записывает файл dict с новыми ключами, спасибо большое – user3188922

ответ

0

Вот два лайнера для функции новообращенного:

RSEM = {key: ERCC.get(key, RSEM[key]) for key in RSEM} 
print RSEM 

Чтобы сбросить Dict в файл просто сделать:

with open("your_file_name", "w") as dumpfile: 
    dumpfile.write(str(RSEM)) 
+0

Спасибо, эти две строки, безусловно, проще! Мне было интересно, как печатать dict в тексте, но сохраняя вкладки и строки так, как это было во входном файле, каждый ключ на разных строках. – user3188922

+0

Модуль 'json' хорош для этих целей. Попробуйте следующее: 'print json.dumps (RSEM, indent = 4, sort_keys = True)' –

0

Ваш код кажется, все хорошо. Но вы использовали заявление return перед заявлением print. Выполнение функции convert останавливается на return ***, и оператор печати вообще не выполняется. Вот почему вы не получаете какой-либо результат.

+0

Спасибо, что я понятия не имел! – user3188922

1
 >>> dic={} 
    >>> for k,v in myboi.items(): 
r=input("Enter item to Update write in ""=") 
if r: 
    dic[r]=v 
else: 
    dic[k]=v 
    Enter item to Update write in ="Mahesh" 
    Enter item to Update write in ="Saka" 
    >>> 
    >>> dic 
    {'Mahesh': 'Mahesh', 'Saka': 'Mahesh'} 
    You want compulsary input key in this program you want update one or more time you empty dic={} 
    result={'Mahesh': 'Mahesh', 'Saka': 'Mahesh'} 


    >>> fi.close() 
    >>> fi=open("m.txt","r") 
    >>> fi.readlines() 
    ['Maheshname'] 
    >>> fi=open("m.txt","w+") 
    >>> for k,v in myboi.items(): 
fi.write("'"+k+"'"+":"+"'"+v+"'") 


    >>> fi.close() 
    >>> fi=open("m.txt","r") 
    >>> fi.readlines() 
    ["'Mahesh':'Mahesh''name':'Mahesh'"] 
Смежные вопросы