2014-08-04 3 views
0

Мои данные как переменные:Как сократить мой код, чтобы написать простой текстовый файл?

Brazil = 55 
USA = 12 
Greece = 32 
India = 56 

Теперь я хотел произвести текстовый файл, как показано ниже:

Brazil 55 
USA 12 
Greece 32 
India 56 

with open ('result.txt','w') as fo: 
    fo.write('Brazil' + ' ' + str(Brazil) + '\n') 
    fo.write('USA' + ' ' + str(USA) + '\n') 
    fo.write('Greece' + ' ' + str(Greece) + '\n') 
    fo.write('India' + ' ' + str(India) + '\n') 

Мой код работает, но как я могу сократить его? Я использую Python 2.7

+0

Этот сайт: HTTP : //codereview.stackexchange.com/ может быть лучшим местом для этого вопроса. –

ответ

0

Тот же ответ, как inspectorG4dget, но с использованием более новой строки стиль форматирования (который я думаю, это немного яснее и проще в использовании): версия

import collections 
vals = collections.OrderedDict([("Brazil", 55), ("USA", 12), ("Greece", 32), ("India", 56)]) 
with open('result.txt', 'w') as fo: 
    for country,score in vals.iteritems(): 
     fo.write("{} {}".format(country, score)) 
5
import collections 
vals = collections.OrderedDict([("Brazil", 55), ("USA", 12), ("Greece", 32), ("India", 56)]) 
with open('result.txt', 'w') as fo: 
    for country,score in vals.iteritems(): 
     fo.write("%s %d\n" %(country, score)) 
0

Альтернативой, 1-линия короче и без импорта:

dict = {'Brasil':55, 'USA':12, 'Greece':32, 'India':56,} 
with open("result.txt", "w") as fd: 
    for c in dict: 
     fd.write("%s %d\n" % (c, dict[c])) 

Edit: я испытал с печатью вместо fd.write

@Burhan Халид, я поднимаю вас 2-футовый:

dict = {'Brasil':55, 'USA':12, 'Greece':32, 'India':56,} 
open("result.txt", "w").write("\n".join(['%s %d' % (c, v) for c,v in dict.iteritems()])) 

И пусть GvR простит нас за то, что явным образом не закрыл файл ...

Кроме того, отсюда на одном лайнере очевидно, просто включите dict в список.

0

Три линии:

d = {'Brasil':55, 'USA':12, 'Greece':32, 'India':56} 
with open('result.txt', 'w') as fo: 
    fo.write('\n'.join('{} {}'.format(a, b) for a,b in d.iteritems())) 
Смежные вопросы