以下是我的代码:
inv = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1}
x=max(inv, key=lambda x: len(x.split()))
y=len(x)
#print(y)
n = "-"
q = n * (y+5)
#print(q)
#print("")
def print_table(inventory, order=None):
if order=="count,asc":
for key, value in sorted(inventory.iteritems(), key=lambda (k, v): (v, k)):
print "%s %s" % (value, key)
print_table(inv,"count,asc")
我想要这样的东西:
Inventory:
count item name
----------------
45 gold coin
12 arrow
6 torch
2 dagger
1 rope
1 ruby
----------------
Total number of items: 67
订单参数必须是一个字符串,其工作方式如下:空(默认情况下)表示表是无序的“count,desc”
表是按数量(库存中的项目)降序排序的,“cound,asc”
是按升序排序的
我写了一个函数,在每个内部列表中查找最长的字符串,以知道列应该有多宽才能适应所有的字符串,但是现在我被困在这一点上了,我现在该怎么办?
如果这就是你想要做的,
反向=True
在你的排序方法就可以了!
def print_table(inventory, order=None):
if order=="count,asc":
for key, value in sorted(inventory.iteritems(), key=lambda (k, v): (v, k)):
print str(value).rjust(10), key.rjust(10)
elif order=="count,desc":
for key, value in sorted(inventory.iteritems(), key=lambda (k, v): (v, k), reverse=True):
print str(value).rjust(10), key.rjust(10)
print_table(inv,"count,desc")
你有正确的想法来找到最长的键及其长度。所有你需要的是格式化它:
def print_table(inventory, order=None):
longest_key = max(inventory, key=len)
max_width = len(longest_key)
if order == "count,asc":
for key, value in sorted(inventory.iteritems(), key=lambda (k, v): (v, k)):
print '%6d %*s' % (value, max_width, key)
输出:
1 dagger
1 rope
6 torch
42 gold coin
为了解决不同的排序列和顺序(升序、降序),我建议不要传递字符串,而是传递一个键函数和排序方向(升序或降序):
def print_table(inventory, order=None, descending=False):
longest_key = max(inventory, key=len)
max_width = len(longest_key)
for key, value in sorted(inventory.iteritems(), key=order, reverse=descending):
print '%6d %*s' % (value, max_width, key)
# Define a bunch of key functions, used for sorting
by_count = lambda (k, v): (v, k)
by_name = None
inv = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1}
print '\nBy count, ascending'
print_table(inv, order=by_count)
print('\nBy name, descending')
print_table(inv, order=by_name, descending=True)
注意:默认情况下,sorted
函数将按(k,v)对dict.items()进行排序,因此
By_name
函数可以是None
,也可以是更明确的lambda(k,v):(k,v)
是否可以创建一个带有右对齐图标和文本的,图标在右边,像这样: 我见过这个问题,但这真的是最好的方法吗?
问题内容: 我可以将JTextArea中的文本向右对齐(或通常更改文本对齐方式)吗? 我一直在搜索数小时,似乎其他人之前也曾问过这个问题,但没有好的答案(这确实有效)。 提前致谢! 问题答案: 尝试使用或代替。 有关更多信息,请查看此线程在JEditorPane中的文本垂直对齐 样例代码: 编辑 你可以试试
问题内容: 基本上,我有一个JTable包含具有右对齐单元格但左对齐标题的列,这看起来确实很糟糕。我想在不更改标题的“外观”的情况下,将这些列的标题右对齐。 谢谢 问题答案: 这是修改表格的的另一种方法。对于此用法,这不是严格必要的,但可以最大程度地减少对UI委托外观的影响。 典型用法: 自定义标题渲染器:
我有一个EditText包含在TextInputLayout中。我希望在EditText下显示错误,但要对齐到屏幕的右端。 我的XML是: 我在使用数据绑定。
在Java中,如何使用printf()对同一行的输出进行一致的左对齐和右对齐?这是所有left aligned的代码: 这是所有东西都保持对齐的输出: 相反,如果第三个元素(0.20,1.00,9.00)是正确的,那么我想要的是什么。我在上面的输出中指出“l”是左对齐的,但我希望变量在“r”所在的位置是右对齐的。如何使右边的输出(0.20,1.00,9.00)右对齐,同时使左边的输出(苹果,派,奶
问题内容: 我想有A B和C中间对齐。 我如何才能D完全右移? 问题答案: 以下是实现此布局的五个选项: CSS定位 带有不可见DOM元素的Flexbox 带有不可见伪元素的Flexbox Flexbox与 flex: 1 CSS网格布局 方法1:CSS定位属性 应用于容器。 应用于项目D。 现在,此项目已完全放置在flex容器中。 更具体地说,项目D从文档流中删除,但停留在最接近的祖先的范围内。
问题内容: 我有这些数字的数组 我使用这样的对象 得到这些结果 但是我需要像下面这样将结果对齐到正确的位置 您的帮助已经受到赞赏。 问题答案: 您可以将其包装成这样的呼叫: