【问题标题】:how do i print the names of the items without looping?如何在不循环的情况下打印项目的名称?
【发布时间】:2018-08-20 02:55:21
【问题描述】:

这是代码:

itemDict = {"Laptop" : 3499.0, "Keyboard" : 10.5, "Harddisk" : 159.3, "Mouse" : 8.9}

print("Item Listing")

print("---------------------")

def displayItem(itemDict):
    i = list(itemDict.values())

    return i
def names(itemDict):
    j = list(itemDict.keys())

    return j
for names in names(itemDict):
    for values in displayItem(itemDict):
        print(names + " - $" + str(values))

【问题讨论】:

  • 为什么不想循环播放?
  • 如果你直接print(itemDict),你就摆脱了明显的循环,但是你的程序并没有变得更快,因为在 dict 的 str 实现中仍然存在底层循环。在一行中,打印一个列表是 O(n) 操作,并且需要循环是内在的。

标签: python python-3.x dictionary key-value


【解决方案1】:

或单线:

d = {"Laptop" : 3499.0, "Keyboard" : 10.5, "Harddisk" : 159.3, "Mouse" : 8.9}
print('\n'.join(' - $'.join(map(str,i)) for i in zip(sorted(list(d.keys())*len(d),key=list(d.keys()).index),sorted(list(d.values())*len(d),key=list(d.values()).index))))

【讨论】:

  • 嗯,看起来多么可怕! :)
  • @eyllanesc 哈哈。它看起来确实很可怕,但这是我能弄清楚的唯一一条线
  • 我不喜欢回答这些类型的问题,因为它们没有意义
  • @eyllanesc 这是一个奇怪的问题,但仍然可以回答和理解
  • 您将在哪个生产项目中使用这种类型的代码?对我来说,这更接近于鼓励一种不好的做法。 :)
【解决方案2】:

如果你正在寻找,你可以让它更简单一点:

for i in itemsDict:
    print i, itemsDict[i]

这将打印键:值对

对于动态变化的 Dict,我认为除了迭代之外没有其他方法可以打印所有值。

希望有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 2020-06-05
    • 1970-01-01
    • 2011-04-08
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多