我有一个清单,我在上面调用了一个函数,以使其按字典顺序打印出清单。词法从本质上来说是一个sort(),并不重要,但我希望此列表与每个条目都换行。现在,它的打印效果就像
$ export foo="abc"
$ echo $foo
abc
$ echo '{"key":"$foo"}'
{"key":"$foo"}
$ echo {"key":"$foo"}
{key:abc}
$ echo {\"key\":\"$foo\"}
{"key":"abc"}
当我想要
['(011)', '(022)', '(040)', '(04344)', '(044)', '(04546)', '(0471)', '(080)', '(0821)']
我尝试使用011
022
etc
循环,但这使情况变得更糟。我尝试过
for
但这并没有改变任何东西。我什至尝试制作一个新的空列表并追加,但是没有“ lexicographic”函数调用,新行功能无法正常工作。
print (lexicographic(uniquelist), sep = '\n')
期望如此,但按字典顺序排序并换行
答案 0 :(得分:1)
您可以通过两种方式完成自己喜欢的事情:
uniques = ['(04344)', '(080)', '(044)', '(011)',
'(0821)', '(022)', '(040)', '(0471)',
'(04546)']
# Join with new lines and print
print('\n'.join(sorted(uniques)))
# A classic loop, nothing wrong with this
for item in sorted(uniques):
print(item)
输出为:
(011)
(022)
(040)
(04344)
(044)
(04546)
(0471)
(080)
(0821)
如果您不想要括号,
for item in sorted(uniques):
print(item[1:-1])
答案 1 :(得分:1)
在词典功能内,尝试做
for l in lexographically_sorted_list:
print (l)
答案 2 :(得分:1)
如果只想将列表的每个元素打印在一行上,则可以使用:[print(elt) for elt in list]
这里有一个示例也删除了括号:
list = ['(0821)', '(011)', '(080)', '(022)', '(04344)', '(040)', '(044)', '(04546)', '(0471)', ]
# sort
list.sort()
# Print each element per line
[print(elt[1:-1]) for elt in list]
# 011
# 022
# 040
# 04344
# 044
# 04546
# 0471
# 080
# 0821
希望有帮助!