相关疑难解决方法(0)

Python:使用字典计算列表中的项目

我是Python的新手,我有一个简单的问题,比如我有一个项目列表:

['apple','red','apple','red','red','pear']
Run Code Online (Sandbox Code Playgroud)

什么是将列表项添加到字典中的最简单方法,并计算项目在列表中出现的次数.

所以对于上面的列表,我希望输出为:

{'apple': 2, 'red': 3, 'pear': 1}
Run Code Online (Sandbox Code Playgroud)

python

159
推荐指数
8
解决办法
20万
查看次数

Python - 字典是否很难找到每个字符的频率?

我试图使用O(n)复杂度的算法在任何给定文本中找到每个符号的频率.我的算法看起来像:

s = len(text) 
P = 1.0/s 
freqs = {} 
for char in text: 
    try: 
       freqs[char]+=P 
    except: 
       freqs[char]=P 
Run Code Online (Sandbox Code Playgroud)

但我怀疑这个字典方法足够快,因为它取决于字典方法的底层实现.这是最快的方法吗?

更新:如果使用集合和整数,速度不会增加.这是因为该算法已经具有O(n)复杂度,因此不可能实现必要的加速.

例如,1MB文本的结果:

without collections:
real    0m0.695s

with collections:
real    0m0.625s
Run Code Online (Sandbox Code Playgroud)

python algorithm probability frequency

24
推荐指数
5
解决办法
5131
查看次数

为什么`dict in dict`和`key in dict.keys()`有相同的输出?

我试图在字典中搜索键,但我忘了添加该keys()功能.我仍然得到了预期的答案.

为什么这两个表达式的结果相同?

key in dict
Run Code Online (Sandbox Code Playgroud)

key in dict.keys()
Run Code Online (Sandbox Code Playgroud)

python dictionary

11
推荐指数
1
解决办法
2964
查看次数

为什么collections.Counter比''.count慢得多?

我有一个简单的任务:计算字符串中每个字母出现的次数.我已经使用了Counter()它,但是在一个论坛上,我看到使用dict()/的信息Counter()比使用string.count()每个字母慢得多.我认为它只会通过字符串进行一次,并且string.count()解决方案必须迭代四次(在这种情况下).为什么Counter()这么慢?

>>> timeit.timeit('x.count("A");x.count("G");x.count("C");x.count("T")', setup="x='GAAAAAGTCGTAGGGTTCCTTCACTCGAGGAATGCTGCGACAGTAAAGGAGGCCACGTGGTTGAGAGTTCCTAAGCATTCGTATGTACACCCGGACTCGATGCACTCAAACGTGCTTAAGGGTAAAGAAGGTCGAGAGGTATACTGGGGCACTCCCCTTAGAATTATATCTTGGTCAACTACAATATGGATGGAAATTCTAAGCCGAAAACGACCCGCTAGCGGATTGTGTATGTATCACAACGGTTTCGGTTCATACGCAAAATCATCCCATTTCAAGGCCACTCAAGGACATGACGCCGTGCAACTCCGAGGACATCCCTCAGCGATTGATGCAACCTGGTCATCTAATAATCCTTAGAACGGATGTGCCCTCTACTGGGAGAGCCGGCTAGACTGGCATCTCGCGTTGTTCGTACGAGCTCCGGGCGCCCGGGCGGTGTACGTTGATGTACAGCCTAAGAGCTTTCCACCTATGCTACGAACTAATTTCCCGTCCATCGTTCCTCGGACTGAGGTCAAAGTAACCCGGAAGTACATGGATCAGATACACTCACAGTCCCCTTTAATGACTGAGCTGGACGCTATTGATTGCTTTATAAGTGTTATGGTGAACTCGAAGACTTAGCTAGGAATTTCGCTATACCCGGGTAATGAGCTTAATACCTCACAGCATGTACGCTCTGAATATATGTAGCGATGCTAGCGGAACGTAAGCGTGAGCGTTATGCAGGGCTCCGCACCTCGTGGCCACTCGCCCAATGCCCGAGTTTTTGAGCAATGCCATGCCCTCCAGGTGAAGCGTGCTGAATATGTTCCGCCTCCGCACACCTACCCTACGGGCCTTACGCCATAGCTGAGGATACGCGAGTTGGTTAGCGATTACGTCATTCCAGGTGGTCGTTC'", number=10000)
0.07911698750407936
>>> timeit.timeit('Counter(x)', setup="from collections import Counter;x='GAAAAAGTCGTAGGGTTCCTTCACTCGAGGAATGCTGCGACAGTAAAGGAGGCCACGTGGTTGAGAGTTCCTAAGCATTCGTATGTACACCCGGACTCGATGCACTCAAACGTGCTTAAGGGTAAAGAAGGTCGAGAGGTATACTGGGGCACTCCCCTTAGAATTATATCTTGGTCAACTACAATATGGATGGAAATTCTAAGCCGAAAACGACCCGCTAGCGGATTGTGTATGTATCACAACGGTTTCGGTTCATACGCAAAATCATCCCATTTCAAGGCCACTCAAGGACATGACGCCGTGCAACTCCGAGGACATCCCTCAGCGATTGATGCAACCTGGTCATCTAATAATCCTTAGAACGGATGTGCCCTCTACTGGGAGAGCCGGCTAGACTGGCATCTCGCGTTGTTCGTACGAGCTCCGGGCGCCCGGGCGGTGTACGTTGATGTACAGCCTAAGAGCTTTCCACCTATGCTACGAACTAATTTCCCGTCCATCGTTCCTCGGACTGAGGTCAAAGTAACCCGGAAGTACATGGATCAGATACACTCACAGTCCCCTTTAATGACTGAGCTGGACGCTATTGATTGCTTTATAAGTGTTATGGTGAACTCGAAGACTTAGCTAGGAATTTCGCTATACCCGGGTAATGAGCTTAATACCTCACAGCATGTACGCTCTGAATATATGTAGCGATGCTAGCGGAACGTAAGCGTGAGCGTTATGCAGGGCTCCGCACCTCGTGGCCACTCGCCCAATGCCCGAGTTTTTGAGCAATGCCATGCCCTCCAGGTGAAGCGTGCTGAATATGTTCCGCCTCCGCACACCTACCCTACGGGCCTTACGCCATAGCTGAGGATACGCGAGTTGGTTAGCGATTACGTCATTCCAGGTGGTCGTTC'", number=10000)
2.1727447831030844
>>> 2.1727447831030844 / 0.07911698750407936
27.462430656767047
>>> 
Run Code Online (Sandbox Code Playgroud)

python performance counter

6
推荐指数
2
解决办法
1486
查看次数

Python FizzBu​​zz

我已经在Python中提出了这个问题:

从用户处获取一个数字列表,然后在该列表中运行FizzBu​​zz.

循环浏览列表时,请记住以下规则:

1)如果数字可以被3和5打印整除 FizzBuzz

2)如果它只能被3个打印整除 Fizz

3)如果它只能被5个打印整除 Buzz

4)否则只需打印数字

还记得elif!

我创建了以下脚本,但它在if上给出了一个错误 n%3=True

n=input()
    if n%3=True:
        print("Fizz")
    else if n%5=True:
        print ("Buzz")
    elif print n
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?非常感谢你!

python fizzbuzz python-2.7

-6
推荐指数
2
解决办法
5127
查看次数