【问题标题】:Python print dictionary in order [duplicate]Python按顺序打印字典[重复]
【发布时间】:2017-06-29 02:22:15
【问题描述】:

您好,我想按顺序打印这本词典,但我不知道如何:

s = input("")
slist = s.split()
finaldict = {}
for word in slist:
    if not finaldict.get(word):
        finaldict[word] = slist.count(word)

for palabra in finaldict:
    finaldict[palabra]=str(finaldict[palabra])
    print(palabra,finaldict[palabra])

输入:this is a test a test a test 预期输出:

this 1
is 1
a 3
test 3

我想要那个订单,但我得到随机订单打印

谢谢!

【问题讨论】:

  • 什么顺序?
  • 字母顺序?添加项目的顺序?
  • @user2357112 我认为他的意思是单词第一次出现的顺序。
  • 我要保持输入的顺序

标签: python


【解决方案1】:

你真的不能在字典里有一个顺序。查看 OrderedDict 模块以按照存储顺序打印内容

import collections 
s = input("")
slist = s.split()
finaldict = collections.OrderedDict()
for word in slist:
    if not finaldict.get(word):
        finaldict[word] = slist.count(word)

for palabra in finaldict:
    finaldict[palabra]=str(finaldict[palabra])
    print(palabra,finaldict[palabra])

【讨论】:

  • 非常感谢!
  • 没问题。记得采纳答案!
【解决方案2】:

字典本质上是无序的。您想使用OrderedDict(在collections 模块中找到)。您可以像分配常规 dict 一样分配给 OrderedDict,并通过将 2 元组列表传递给 OrderedDict 构造函数来初始化它。例如:

>>> from collections import OrderedDict
>>> spam = OrderedDict([('a', 1), ('b', 2)])
>>> spam['c'] = 3
>>> print spam
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> eggs = OrderedDict()
>>> eggs['a'] = 1
>>> print eggs
OrderedDict([('a', 1)])

【讨论】:

    猜你喜欢
    • 2020-04-11
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多