我在mac上运行Python2.7.2。
我有一本简单的字典:
dictionary= {a,b,c,a,a,b,b,b,b,c,a,w,w,p,r}
我想打印出来,输出如下:
Dictionary in alphabetical order:
a 4
b 5
c 2
p 1
r 1
w 2
但我得到的是这样的东西。。。
a 1
a 1
a 1
a 1
b 1
.
.
.
w 1
这是我正在使用的代码。
new_dict = []
for word in dictionary.keys():
value = dictionary[word]
string_val = str(value)
new_dict.append(word + ": " + string_val)
sorted_dictionary = sorted(new_dict)
for entry in sorted_dictionary:
print entry
你能告诉我错误在哪里吗? (顺便说一句,我不是程序员,而是语言学家,所以请放轻松。)
字典是这样的
{key1:content1, key2:content2, ...}
字典中的键是唯一的。那么a = {1,2,3,4,5,5,4,5,6}
就是集合,当您打印出来时,您会注意到消除重复项。
在您的情况下,可以使用的更好的数据结构是一个列表,其中可以包含多个重复项。
如果要计算内部的元素数,一个更好的选项是collections.Counter,例如:
结果将是:
正如你所注意到的,结果在这里变成了一本字典。
所以通过使用:
您可以访问密钥和内容
你可以通过稍微修改一下来实现你想要的。希望这对你有帮助
让我们从显而易见的开始,这:
不是字典。它是一个
set
,并且set
不保留重复项。你可能打算声明为list
或tuple
。现在,来谈谈你的问题:你需要实现一些东西来计算你收藏的物品。你的实现并不能真正做到这一点。你可以自己滚,但实际上你应该使用一个
Counter
:接下来的问题是:字典(所有类型的,包括
Counter
对象)不保留键顺序。您需要调用dict的items()
上的sorted
,这是一个元组列表,然后遍历它来进行打印。你用的不是字典,而是set!:)
集合不允许重复。
你可能需要的不是字典,而是列表。
一点解释
字典有键,每个唯一键都有自己的值:
您可以使用键检索值:
另一方面,列表没有密钥。
然后使用它们的索引检索值:
记住,指数从零开始计算,而不是从1开始。
解决问题
现在,为了你的问题。首先,将字符存储为列表:
接下来,我们需要知道此列表中有哪些项:
这几乎等于
items = set(l)
(唯一的区别是这是一个列表)。但为了让事情更清楚,希望你能理解代码的作用。以下是
items
的内容:完成后,我们将使用^{} 方法查看列表中出现的字符数,并使用内置函数^{} 对项目进行排序:
结果:
希望这有帮助!!
相关问题 更多 >
编程相关推荐