我正在完成Building Skills in Python中的练习,据我所知,这些练习没有任何已发布的解决方案。在
在任何情况下,我都试图让一个字典来计算某个数字在原始列表中出现的次数,然后再删除重复项。出于某种原因,尽管下面的主题有很多变化,但我似乎不能增加字典中每个“键”的值。在
我怎么能用字典来编码呢?在
dv = list()
# arbitrary sequence of numbers
seq = [2,4,5,2,4,6,3,8,9,3,7,2,47,2]
# dictionary counting number of occurances
seqDic = { }
for v in seq:
i = 1
dv.append(v)
for i in range(len(dv)-1):
if dv[i] == v:
del dv[-1]
seqDic.setdefault(v)
currentCount = seqDic[v]
currentCount += 1
print currentCount # debug
seqDic[v]=currentCount
print "orig:", seq
print "new: ", dv
print seqDic
我不太确定你想做什么。。计算每个数字出现的频率?在
defaultdict让这一切变得简单:
defaultdict
不是{dict
:这种简单的方法在这里尤其有效,因为您无论如何都需要}。否则,更简单的方法是:
^{pr2}$if i in seqDic
测试来构建dv
以及{使用
dict
的便捷方法get
,如果第一个参数不是字典中的键,则返回第二个参数。如果您喜欢这个想法,这里有一个解决方案,同时也构建dv
:编辑:如果不区分}中第一次出现的项的顺序相同),那么只需使用(在循环的简单版本之后)
dv
中项目的顺序(而不是希望dv
与{也可以(在python2中,
.keys
返回一个列表),也是如此这在python2和python3中都很好。在同样的假设下(你不关心
dv
中项目的顺序),还有其他一些好的解决方案,比如这里,我们首先使用字典的}或成员资格检查。在
fromkeys
类方法来构建一个新dict,它已经将0
作为与每个键对应的值,这样我们就可以只增加每个条目,而不必进行{相关问题 更多 >
编程相关推荐