Python matnga lug'at yozish Fayl to'g'ri chiqdi ishlab chiqarmaydi

Menda shunday bir lug'at bor -

D = {"Dave" :( "Erkak", "96"), "Alice" :( "Ayollar", "98")}

Uni matn shaklida bunday formatda yozishni istayman -

Dave
Male
96
Alice
Female
98

Bu mening joriy kodim -

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}

with open("dictionary.txt", 'w') as f:
    for key, value in d.items():
    f.write('%s \n %s \n' % (key, value))

Biroq, matn faylida quyidagi chiqdi ishlab chiqaradi:

Dave 
  ('Male', '96') 
 Alice 
  ('Female', '98') 

Buni qanday o'zgartirish mumkin? Iltimos yordam bering! Rahmat.

0
To'plamning har bir a'zosini chop etish uchun yana bir pastadir foydalaning
qo'shib qo'ydi muallif jeff carey, manba
To'plamning har bir a'zosini chop etish uchun yana bir pastadir foydalaning
qo'shib qo'ydi muallif jeff carey, manba
@jeffcarey Iltimos, o'zimning javobimga qarang!
qo'shib qo'ydi muallif Bob Smith, manba
@jeffcarey Iltimos, o'zimning javobimga qarang!
qo'shib qo'ydi muallif Bob Smith, manba
Har bir dict bandi qiymati - bu tuple. Qatorni yozish o'rniga, value [0] va value [1] dan foydalangan holda nusxa ko'chirishning har bir elementini yozing.
qo'shib qo'ydi muallif justincai, manba
Har bir dict bandi qiymati - bu tuple. Qatorni yozish o'rniga, value [0] va value [1] dan foydalangan holda nusxa ko'chirishning har bir elementini yozing.
qo'shib qo'ydi muallif justincai, manba

8 javoblar

Agar formatlash yordamida nusxa kodini str ga o'zgartirsangiz, nusxadagi vakolatxona ga ega bo'lasiz (taxminan, kodi> __ str __ va __ repr __ aslida), python, kiritish buyrug'ini konsolda yozganda bosib chiqaradi.

Tuple bezaklarsiz elementlarni olish uchun siz ochishingiz kerak tuple. Bitta variant ( format dan foydalaning):

for key, value in d.items():
    f.write("{}\n{}\n{}\n".format(key,*value))

* unpacks the elements of value into 2 elements. format does the rest

Bundan ham kichikroq usul formatlash mag'lubiyatini 3 (kamroq nusxa ko'chirish/joylashtirish)

for key, value in d.items():
    f.write(("{}\n"*3).format(key,*value))
2
qo'shib qo'ydi

Agar formatlash yordamida nusxa kodini str ga o'zgartirsangiz, nusxadagi vakolatxona ga ega bo'lasiz (taxminan, kodi> __ str __ va __ repr __ aslida), python, kiritish buyrug'ini konsolda yozganda bosib chiqaradi.

Tuple bezaklarsiz elementlarni olish uchun siz ochishingiz kerak tuple. Bitta variant ( format dan foydalaning):

for key, value in d.items():
    f.write("{}\n{}\n{}\n".format(key,*value))

* unpacks the elements of value into 2 elements. format does the rest

Bundan ham kichikroq usul formatlash mag'lubiyatini 3 (kamroq nusxa ko'chirish/joylashtirish)

for key, value in d.items():
    f.write(("{}\n"*3).format(key,*value))
2
qo'shib qo'ydi

Har bir kalitda har bir qiymat uchun yinelaydigan i intervalli usuli -

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}

with open("dictionary.txt", 'w') as f:
    for key, value in d.items():
        for x in range(0,2):
            f.write('%s \n %s \n' % (key, value[x]))
1
qo'shib qo'ydi
Yoping. Kalitni tashqi pastadirga, so'ngra ichki pastadirdagi qiymatlarga yozing.
qo'shib qo'ydi muallif jeff carey, manba
Bu har bir ikkinchi qatorni takrorlaydi.
qo'shib qo'ydi muallif Thierry Lathuille, manba

Har bir kalitda har bir qiymat uchun yinelaydigan i intervalli usuli -

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}

with open("dictionary.txt", 'w') as f:
    for key, value in d.items():
        for x in range(0,2):
            f.write('%s \n %s \n' % (key, value[x]))
1
qo'shib qo'ydi
Yoping. Kalitni tashqi pastadirga, so'ngra ichki pastadirdagi qiymatlarga yozing.
qo'shib qo'ydi muallif jeff carey, manba
Bu har bir ikkinchi qatorni takrorlaydi.
qo'shib qo'ydi muallif Thierry Lathuille, manba

Python 3.6 da quyidagi ishlar:

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}
with open('dictionary.txt', mode='w') as f:
    for name, (sex, age) in d.items():
        f.write(f'{name}\n{sex}\n{age}\n')

for pastki qismidagi to'plamni ochishingiz mumkin. Bundan tashqari, Python 3.6 da sizga f-string dan foydalanishingiz mumkin. to'g'ridan-to'g'ri o'zgarmaydigan qiymatlarni satrlarga kiritadi.

1
qo'shib qo'ydi

Python 3.6 da quyidagi ishlar:

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}
with open('dictionary.txt', mode='w') as f:
    for name, (sex, age) in d.items():
        f.write(f'{name}\n{sex}\n{age}\n')

for pastki qismidagi to'plamni ochishingiz mumkin. Bundan tashqari, Python 3.6 da sizga f-string dan foydalanishingiz mumkin. to'g'ridan-to'g'ri o'zgarmaydigan qiymatlarni satrlarga kiritadi.

1
qo'shib qo'ydi
 d = {"Dave":("Male", "96"), "Alice":("Female", "98")}
 with open("dictionary.txt", 'w') as f:
    for key in d.keys():
        f.write('%s \n' % (key))
        for v in d[key]:
           f.write('%s \n' % (v))
0
qo'shib qo'ydi
Hozir buni sinab ko'ring.
qo'shib qo'ydi muallif Mohamad Ibrahim, manba
 d = {"Dave":("Male", "96"), "Alice":("Female", "98")}
 with open("dictionary.txt", 'w') as f:
    for key in d.keys():
        f.write('%s \n' % (key))
        for v in d[key]:
           f.write('%s \n' % (v))
0
qo'shib qo'ydi
Hozir buni sinab ko'ring.
qo'shib qo'ydi muallif Mohamad Ibrahim, manba
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming