python中,怎么做个字典,数句子中单词出现的次数

python中,怎么做个字典,数句子中单词出现的次数,第1张

text = raw_input("enter a sentence:")

words = textsplit()

wordscount = [wordscount(elem) for elem in words]

worddict={map(None,words,wordscount)}

要完成你的目标:

我要

计算每个词语出现的次数

把词语出现的次数和词语列表组合成字典

伪代码出来了,程序也就有了

python有着强大的列表解析,内建模块使用C完成,他们很快,所以能够调用内建模块你就不要自己多事。

尽量按照伪代码去完成程序,除非必须细化,否则让python为你 *** 作低层吧,他很聪明

第三句释义:

对于列表元素计数有很简单的listcount()方法。

这个语句就是利用了这个,statement for element in list fileter expression这是list的解析式。

通过这个你可以方便的将一个list解析为另一个。这一句就对list中所有的元素运用count()方法,并且建立新的list。

另外一个例子:a=[2,3,4,7,8]找到这个list中的偶数,并得到它们的平方列表

这样写:[elemelem for elem in a if elem%2==0]

第四句释义:

list有个map方法,它可以提供list的映射。map(statement,list1,list2)就是将list1,list2按照statement规则映射。我的表达式是none所以得到的结果就是简单的[('this', 3), ('is', 4), ('a', 1)]这样的二元tuple列表。

dict函数则是针对上述list的。它能把上述list转化为字典。

这在你做数据处理时很有好处,你可以很轻松的建立一个hash表。

python的强大在于简明,遇到程序尝试着用最简单地方法去解决,你会很快喜欢上的。

以上^乐于与您交流

楼主要求用C,麻烦呢,如果用C++倒是方便多了,闲着没事做,简单写了下,看下就好

#include <iostream>

#include <map>

#include <list>

#include <string>

using namespace std;

struct BirthInfo

{

    int month;

    int day;

    BirthInfo()

    {

        month = 0;

        day = 0;

    }

    bool operator == (const BirthInfo& rhs ) const

    {

        if ( month == rhsmonth && day == rhsday )

        {

            return true;

        }

        return false;

    }

    bool operator < (const BirthInfo& rhs ) const

    {

        if ( month < rhsmonth )

        {

            return true;

        }

        else if ( month == rhsmonth )

        {

            if ( day < rhsday )

            {

                return true;

            }

        }

        return false;

    }

};

struct SameBirthInfo

{

    int nCount;

    list<string> StrNoList;

    SameBirthInfo()

    {

        nCount = 0;

    }

};

typedef map<BirthInfo , SameBirthInfo> Result;

int main()

{

    int nStudentCount = 0;

    string strNo = "";

    BirthInfo BirInfo;

    Result result;

    SameBirthInfo sameBirthInfo;

    cin >> nStudentCount;

    while( nStudentCount -- > 0 )

    {

        cin >> strNo >> BirInfomonth >> BirInfoday;

        Result::iterator iter = resultfind( BirInfo );

        if ( iter == resultend() )

        {

            //找不到

            pair<Result::iterator , bool> pInsRet = resultinsert( Result::value_type(BirInfo,sameBirthInfo) );

            if ( pInsRetsecond )

            {

                pInsRetfirst->secondnCount = 1;    //记录下此生日有一人

                pInsRetfirst->secondStrNoListpush_back( strNo );  //记录下此人学号

            }

        }

        else

        {

            //找到

            iter->secondnCount++;   //同一天生日人数++

            iter->secondStrNoListpush_back( strNo );   //保存下这个学生的学号

        }

    }

    //输出所有结果

    Result::const_iterator cIter = resultbegin();

    while ( cIter != resultend() )

    {

        //先输出生日

        cout << cIter->firstmonth << " " << cIter->firstday;

        //输出所有学生学号

        list<string>::const_iterator cStrIter = cIter->secondStrNoListbegin();

        while ( cStrIter != cIter->secondStrNoListend() )

        {

            cout << " " << cStrIter->c_str();

            ++cStrIter;

        }

        cout << endl;

        ++cIter;

    }

    return 0;

}

存在整数键值就不能使用这种 Sformat_map 的方式了,因为 format 中的 {n} 语法已经用来表示取第 n 个位置参数的值,如下:

>>> '{2}{1}{0}'format('a', 'b', 'c')

'cba'

{n} 语法的优先级是高于 format_map 的。

map本身是python中的关键字--一个内置函数,对第二个参数的每一个元素执行第一个参数指定的函数。

但上面的表达式明显不是这个概念,它应该是在print_board函数的外面将map定义成一个二维数组(这样的做法不好哦)

C#中使用Dictionary<TKey,TValue>,C++使用std::map<TK,TV>。map的内部实现是红黑树,Dictionary的实现是哈希表。DotNet中也有用树实现的字典类结构,叫SortedDictionary,似乎用得不多,效率也没有哈希表高,不过可以保持插入的数据是有序的。下面的对比是通过字符串来检索整数,为了写起来方便,C++中字符串直接用了LPCTSTR,并且typedef std::map<LPCTSTR,int> map_type; *** 作C++(STL)C#(net)说明包含#include <map>using SystemCollectionsGeneric;声明map_type map;map_type::iterator iter=mapbegin();Dictionary<string, int> map = new Dictionary<string, int>();如果是自定义的Key类型,C++中需要重载比较运算符;C#中可自定义相等比较器插入map[_T("first")]=5;mapinsert(map_type::value_type(_T("second"),2));mapinsert(map_type::value_type(_T("second"),3)); //不覆盖,不异常mapAdd("first", 5);map["second"] = 2; //这种 *** 作已经进行了插入//mapAdd("second", 3); //重复异常删除maperase(iter); //iter有效且不等于mapend()maperase(_T("first"));mapclear();mapRemove("first");mapClear();查询int val=map[_T("second")]; //没有则构造新的iter=mapfind(_T("first"));if (iter!=mapend())val=iter->second;int data = map["second"]; //不存在则异常mapContainsKey("third");mapContainsValue(5);mapTryGetValue("hello", out data);注意C++中下标检索时如果不存在这个元素也不产生错误遍历for (iter=mapbegin();iter!=mapend();++iter){//遍历时删除maperase(iter++);}foreach (KeyValuePair<string, int> pair in map){ //不能进行删除 *** 作}大小mapsize();

以上就是关于python中,怎么做个字典,数句子中单词出现的次数全部的内容,包括:python中,怎么做个字典,数句子中单词出现的次数、生日相同问题,C语言编程,用字典结构解决,求解啊速度~~~、Python中字典中存在整数键值能使用fomat_map进行格式化字符串吗如果字典内嵌字典又怎么格式化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9828102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存