Попарно заменить буквы в строке

Есть задание из "TTAGCGCA", вывести "AATCGCGT" используя словарь ретрансляции. Как это сделать?

table = {
    "A": "T",
    "T": "A",
    "C": "G",
    "G": "C"
}

print(list(table.keys()))

Ответы (5 шт):

Автор решения: anton

Естественно неправильный, потому что вы выводите ключи, а не заменяйте символы на другие:

def translate(target: str, dictionary: dict[str, str]) -> str:
    return ''.join(map(lambda x: dictionary.get(x, x), target))

table = {
    "A": "T",
    "T": "A",
    "C": "G",
    "G": "C",
}

print(translate("TTAGCGCA", table))

UPD: Можно сделать так, как сказал @Stanislav Volodarskiy:

def translate(target: str, dictionary: dict[str, str]) -> str:
    return ''.join(target.translate(str.maketrans(table)))
→ Ссылка
Автор решения: Stanislav Volodarskiy

str.maketrans создаёт таблицу трансляции, str.translate её применяет:

table = {
    "A": "T",
    "T": "A",
    "C": "G",
    "G": "C"
}

trans = str.maketrans(table)
print("TTAGCGCA".translate(trans))
$ python translate.py
AATCGCGT
→ Ссылка
Автор решения: wchistow

Самый простой вариант:

table = {
    "A": "T",
    "T": "A",
    "C": "G",
    "G": "C"
}

new_str = ''
for l in 'TTAGCGCA':
    new_str += table[l]
print(new_str)

Выводит:

AATCGCGT
→ Ссылка
Автор решения: CrazyElf

Ещё короткий вариант:

table = {
    "A": "T",
    "T": "A",
    "C": "G",
    "G": "C"
}

print(*map(table.get, "TTAGCGCA"), sep='')
# AATCGCGT
→ Ссылка
Автор решения: MBo

Словарь - это неспортивно, надо в нём рыться, искать ;)

s = 'ACGT'
rep = ''.join([chr(846807841//ord(c)%191) for c in s])
print(rep)
→ Ссылка