Как записать значения ключа словаря в текстовый файл, используя python - PullRequest
0 голосов
/ 30 января 2020

Здесь, в моем коде, я хочу записать значения словаря в текстовые значения. В моем словаре значения находятся в списке кортежей. Например: 'e': [(1, 2), (2, 6), (2 , 11)], я хочу написать букву 'e' в 1-й строке, 2-й позиции, второй строке, 6-й позиции и 2-й строке, 11-й позиции в текстовом файле, используя python. Может ли кто-нибудь указать мне, как это сделать.

Ниже приведены мои проблемы:

d={'a': [(2, 2)], ' ': [(1, 6), (2, 4)], 'c': [(2, 8)], 'e': [(1, 2), (2, 6), (2, 11)], 'd': [(1, 11)], 'i': [(2, 3)], 'h': [(1, 1), (2, 1)], 'm': [(2, 10)], 'l': [(1, 3), (1, 4), (1, 10), (2, 7)], 'o': [(1, 5), (1, 8), (2, 9)], 'r': [(1, 9)], 'w': [(1, 7), (2, 5)]}

with open("C:\Users\Desktop\hellotext.txt","w") as f:
    for k,v in d.items():
        for line_no,letter_pos in v:
            print k,line_no,"lllll",letter_pos
            f.write()  #how to write a file

1 Ответ

2 голосов
/ 31 января 2020
d={'a': [(2, 2)], 'b': [(1, 6), (2, 4)], 'c': [(2, 8)], 'e': [(1, 2), (2, 6), (2, 11)], 'd': [(1, 11)], 'i': [(2, 3)], 'h': [(1, 1), (2, 1)], 'm': [(2, 10)], 'l': [(1, 3), (1, 4), (1, 10), (2, 7)], 'o': [(1, 5), (1, 8), (2, 9)], 'r': [(1, 9)], 'w': [(1, 7), (2, 5)]}


max_raw = max( raw for nested_key in d.values() for raw,col in nested_key )
max_col = max( col for nested_key in d.values() for raw,col in nested_key )


# Creating array of raw=max_raw column=max_col

arr = [ ]

for raw in range(max_raw):

  arr.append( [''] * max_col )



print(arr)
"""
arr = [
['', '', '', '', '', '', '', '', '', '', ''], 
['', '', '', '', '', '', '', '', '', '', '']

]
"""

for char in d:

  positions = d[char]

  for x,y in positions:

    arr[x-1][y-1] = char

print(arr)

"""
[
  ['h', 'e', 'l', 'l', 'o', 'b ', 'w', 'o', 'r', 'l', 'd'], 
  ['h','a', 'i', 'b ', 'w', 'e', 'l', 'c', 'o', 'm', 'e']
]
"""


for raw in arr:

  line = ''.join(raw)
  print(line)

"""
hellobworld
haibwelcome
"""

fh = open('myfile.txt','w'):


for raw in arr:

  line = ''.join(raw)

  fh.write(line)
  fh.write('\n')

fh.close() 
...