Python 将3列中的字典值写入文件
我想将3列中的字典值写入python文件。值的顺序并不重要 我有这本字典,它是:Python 将3列中的字典值写入文件,python,python-3.x,Python,Python 3.x,我想将3列中的字典值写入python文件。值的顺序并不重要 我有这本字典,它是: dict_cols = {'1': 'c1', '2': 'c2', '3': 'c3', '4': 'c4', '5': 'c5', '6': 'c6'} 以下代码将所有值写入文本文件: with open("output.txt", "w") as f: for
dict_cols = {'1': 'c1',
'2': 'c2',
'3': 'c3',
'4': 'c4',
'5': 'c5',
'6': 'c6'}
以下代码将所有值写入文本文件:
with open("output.txt", "w") as f:
for k, v in dict_cols.items():
f.write(v + ", ")
output.txt
将包含以下内容:
c1, c2, c3, c4, c5, c6,
我该如何修改代码以将以下内容打印到3列中的output.txt
,如下所示
c1, c2, c3,
c4, c5, c6
我使用的是python v3.6,对代码的主要修改是在逗号和换行符之间交替使用分隔符。下面是一种通过枚举来跟踪您在序列中的位置的方法:
cols = 3
seps = ' ' * (cols - 1) + '\n'
with open("output.txt", "w") as f:
for i, (k, v) in enumerate(dict_cols.items()):
sep = '' if i == len(dict_cols) - 1 else ',' + seps[i % cols]
f.write(v + sep)
对代码的主要修改是在逗号和换行符之间交替使用分隔符。下面是一种通过枚举来跟踪您在序列中的位置的方法:
cols = 3
seps = ' ' * (cols - 1) + '\n'
with open("output.txt", "w") as f:
for i, (k, v) in enumerate(dict_cols.items()):
sep = '' if i == len(dict_cols) - 1 else ',' + seps[i % cols]
f.write(v + sep)
这与@Mad Physical的答案类似,但它不使用列表来保存行尾(节省内存),它只迭代字典中的值,而不是(未使用的)键和值
dict_cols = {'1': 'c1',
'2': 'c2',
'3': 'c3',
'4': 'c4',
'5': 'c5',
'6': 'c6'}
col = 1
with open('tmp.txt', 'w') as fp:
for i, v in enumerate(dict_cols.values()):
sep = '' if i == len(dict_cols) - 1 else ','
fp.write(v + sep)
if col == 3:
fp.write('\n')
col = 0
col += 1
这与@Mad Physical的答案类似,但它不使用列表来保存行尾(节省内存),它只迭代字典中的值,而不是(未使用的)键和值
dict_cols = {'1': 'c1',
'2': 'c2',
'3': 'c3',
'4': 'c4',
'5': 'c5',
'6': 'c6'}
col = 1
with open('tmp.txt', 'w') as fp:
for i, v in enumerate(dict_cols.values()):
sep = '' if i == len(dict_cols) - 1 else ','
fp.write(v + sep)
if col == 3:
fp.write('\n')
col = 0
col += 1
这是我的方式,如果我必须诚实的话,我会选择@Ben的答案,因为它的代码更少,效率更高,易读,但这就是它的工作原理。首先,我将列表中的不同值分隔成它们所在的行。然后我取每个值并打印出来
file = "test.txt"
dict_cols = {'1': 'c1',
'2': 'c2',
'3': 'c3',
'4': 'c4',
'5': 'c5',
'6': 'c6'}
dict_values = dict_cols.values()
with open (file,"w") as f:
count = -1
sep_values = []
for ind,value in enumerate(dict_values):
if ind%3 ==0:
count+=1
sep_values.append("")
if ind != len(dict_values)-1:
end = ", "
else:
end = ""
sep_values[count] += value+end
for value in sep_values:
f.write(value+"\n")
这是我的方式,如果我必须诚实的话,我会选择@Ben的答案,因为它的代码更少,效率更高,易读,但这就是它的工作原理。首先,我将列表中的不同值分隔成它们所在的行。然后我取每个值并打印出来
file = "test.txt"
dict_cols = {'1': 'c1',
'2': 'c2',
'3': 'c3',
'4': 'c4',
'5': 'c5',
'6': 'c6'}
dict_values = dict_cols.values()
with open (file,"w") as f:
count = -1
sep_values = []
for ind,value in enumerate(dict_values):
if ind%3 ==0:
count+=1
sep_values.append("")
if ind != len(dict_values)-1:
end = ", "
else:
end = ""
sep_values[count] += value+end
for value in sep_values:
f.write(value+"\n")
这很不雅观,但效果很好
dict_cols = {'1': 'c1', '2': 'c2', '3': 'c3', '4': 'c4', '5': 'c5', '6': 'c6'}
line_sep = ',\n'
with open("output.txt", "w") as f:
f.write(', '.join([v for v in dict_cols.values()][:3]) + line_sep +
', '.join([v for v in dict_cols.values()][3:]))
这很不雅观,但效果很好
dict_cols = {'1': 'c1', '2': 'c2', '3': 'c3', '4': 'c4', '5': 'c5', '6': 'c6'}
line_sep = ',\n'
with open("output.txt", "w") as f:
f.write(', '.join([v for v in dict_cols.values()][:3]) + line_sep +
', '.join([v for v in dict_cols.values()][3:]))
您的输出是如何排序的?这有关系吗?您显示的输出不是由您的代码生成的。排序顺序无关紧要。运行您现有的代码:输出不是您声称的。对不起,让我研究一下代码。您的输出是如何排序的?这有关系吗?而且您显示的输出不是由您的代码生成的。排序顺序无关紧要。运行您现有的代码:输出不是您声称的。对不起,让我研究一下代码。这将如何在列中写入它?似乎它所做的一切都不是在最后一个位置放置逗号。我在任何地方都看不到
\n
,或者我遗漏了什么?Nvm,它是在初始化sep中,很抱歉我没有看到。但这将如何在列中写入它?似乎它所做的一切都不是将逗号放在最后一个位置。我在任何地方都没有看到\n
,或者我遗漏了什么?Nvm,是在初始化sep中,很抱歉我没有看到。