回忆列表中的每个单词的位置(甚至是字典)

时间:2016-05-27 19:25:22

标签: python

我目前遇到了麻烦。我需要我的代码来回忆列表中每个单词的位置并打印出来,我不知道从哪里开始。

所以说我输入:"我喜欢奶酪,因为它的奶酪"我需要它来打印所有单词的位置,以便打印类似" 0,1,2,3,4,5,3和#34;的内容。有人可以帮忙吗?

我确信我需要使用" len"或者"字典"但我不确定如何

    words = input("Sentence here:")
    word = input("Word here:")
    print ([i + 1 for i in range(len(words.split(" "))) if words.split(" ")[i].lower() == word.lower()])
#i know this prints the postions of a single selected word from the list but im sure i may have to use the same concept?

4 个答案:

答案 0 :(得分:0)

您的问题有点不清楚但似乎您正在寻找类似的内容:

sentence = input("Sentence here:")
words = sentence.split()
for i in words:
    print(i + ": " + str(sentence.find(i)))

或者如果你想打印出你在问题中显示的逗号分隔的数字,只需将数字保存到列表中,然后在for循环后将它们打印在一起。

答案 1 :(得分:0)

尝试此操作来存储所有不同单词的第一个位置。

 words = input("Sentence here:")   
 allwords = words.split(" ");

 mydict = dict()
for i in range(len(allwords)):
     if allwords[i] not in mydict.keys():
          mydict[allwords[i]] = i;

答案 2 :(得分:0)

>>> s = 'i like cheese because its cheese'
>>> words = s.split()
>>> list(map(words.index, words))
[0, 1, 2, 3, 4, 2]

答案 3 :(得分:-1)

我已经用C#编写了我喜欢的代码。您可以使用您所用语言的逻辑。 逻辑: a)将单个单词存储在字典中。该字典将密钥存储为句子中的单词及其索引作为其值。

Dictionary<string,int> _indexes = new Dictionary<string,int>(); 

Key = word和Value =单词的位置。在此,请注意重复。  如果单词已经存在,请不要将其存储在字典中。

b)使用您的语言使用拆分器提供程序将句子拆分为单个单词。

c)插入每个单词,除非它在字典中是重复的,作为键及其索引作为Key.Value对的值。

d)获取单词并将索引打印为字典中单词的值(如果存在)。

代码:

 class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Enter the sentence below :");
        string sentence = Console.ReadLine();

        var helper = new FindWordPosition();
        helper.StoreWordIndexes(sentence);

        Console.WriteLine("Type a word and find out its index");

        string word = Console.ReadLine();

        helper.PrintPosition(word);
        Console.ReadLine(); 
    }
}

public class FindWordPosition
{
    private readonly Dictionary<string, int> _indexes = new Dictionary<string, int>();

    public void StoreWordIndexes(string sentence)
    {
        string[] words = sentence.Split(' ');

        int count = 0;

        foreach (var word in words)
        {
            if (!_indexes.ContainsKey(word))
            {
                _indexes.Add(word, count);
            }
            count++;
        }
    }

    public void PrintPosition(string word)
    {
        if (!_indexes.ContainsKey(word))
        {
            Console.WriteLine("Word doesnot exist in the sentence");
            return;
        }

        Console.WriteLine("Position of the word {0} is {1}", word, _indexes[word]);
    }
}

希望它适合你。