5

現在、リスト内の各単語の頻度を数えることができます。

    >>> list =['a', 'b', 'a', 'c', 'a', 'c']

frequency = {}
for w in words:
    frequency[w] = frequency.get(w, 0) + 1
return frequency

次の出力が得られます。

{'a': 3, 'b': 1, 'c: 2'}

しかし、私が得たいのは、各リスト項目のペアの頻度です。たとえば、'b' は 'a' の後に 1 回来て、'c' は 'a' の後に 2 回来ます。

{'a':{'b':1,'c':2},'b':{'a':1},'c':{'a':1}}

これを達成するにはどうすればよいですか?

4

2 に答える 2

1
mylist = ['a', 'b', 'a', 'c', 'a', 'c']

freq = {}
for idx, char in enumerate(mylist):
    if idx == len(mylist) - 1: break

    if char not in freq: freq.setdefault(char, {})

    if mylist[idx + 1] in freq[char]:
        freq[char][mylist[idx + 1]] += 1
    else:
        freq[char].setdefault(mylist[idx + 1], 1)

print freq

出力

{'a': {'c': 2, 'b': 1}, 'c': {'a': 1}, 'b': {'a': 1}}
于 2013-10-23T04:05:52.773 に答える