2017-07-22 7 views
0

をリストから要素をマージします。Pythonは - カウンタは私がWindows API呼び出しの完全なリストを持って一緒に

listOfSequences = 
    ['GetSystemDirectoryA', 
    'IsDBCSLeadByte', 
    'LocalAlloc', 
    'CreateSemaphoreW', 
    'CreateSemaphoreA', 
    'GlobalAddAtomW', 
    'lstrcpynW', 
    'LoadLibraryExW', 
    'SearchPathW', 
    'CreateFileW', 
    'CreateFileMappingW', 
    'MapViewOfFileEx', 
    'GetSystemMetrics', 
    'RegisterClipboardFormatW', 
    'SystemParametersInfoW', 
    'GetDC', 
    'GetDeviceCaps', 
    'ReleaseDC', ...... and so on .....] 

それらのいくつかは、数回発生しているので、私は、出現箇所のその数を集めたいと思いました。したがって、私はコレクションを使用しました。カウンター。 しかし、それは一緒にいくつかのAPIを連結します。私はlCountedAPIsを印刷するとき

lCountedAPIs = Counter(listOfSequences) 

私はfolowingます:

Counter({'IsRectEmptyLocalAlloc': 2, 
     'DdePostAdvise': 3, 
     'DispatchMessageWGetModuleFileNameA': 2, 
     'FindResourceExW': 50318, 
     'ReleaseDCGetModuleFileNameW': 7, 
     'DefWindowProcAGetThreadLocale': 1, 
     'CoGetCallContext': 40, 
     'CoGetTreatAsClassGetCommandLineA': 1, 
     'GetForegroundWindowGetSystemDirectoryW': 1, 
     'GetModuleHandleWGetSystemTimeAsFileTime': 2, 
     'WaitForSingleObjectExIsChild': 1, 
     'LoadIconAGetWindowsDirectoryW': 2, 
     'GlobalFreeLocalAlloc': 10, 
     'GetMapModeCreateSemaphoreW': 1, 
     'HeapLock': 11494,     <---------- A 
     'CharNextAGetCurrentProcessId': 11, <---------- B 
     'RemovePropWGetStartupInfoA': 1, 
     'GetTickCountGetVersionExW': 55, 

をだから、元のために: HeapLockは、(Aを参照)マージされていませんでした他のAPIで しかしCharNextAと連結されましたGetCurrentProcessId(B参照)

誰かがなぜこれが起こり、それを修正するのか教えていただけますか? advcanceで

おかげ&よろしく:)

+0

https://stackoverflow.com/questions/2161752/how-to-count-the-frequency-of-theeements-in-a-list – caot

+1

に複製されています。@cot:いいえ、質問はisn '仮説的な「バグ」については、「カウンター」を使うことについて話しました。 –

+0

@aminakoy search「Python 2.7では、collections.Counterをページで使用できます。別のhttps://stackoverflow.com/questions/3496518/python-using-a-dictionary-to-count-the-items-in-a-list?noredirect=1&lq=1 – caot

答えて

4

あなたのリストの定義を確認してください。これは私に何度か噛まれた

listOfSequences = [ 
    'GetSystemDirectoryA', 
    'IsDBCSLeadByte', 
    'LocalAlloc', 
    ... 
    'CharNextA' 
    #  ^comma missing here 
    'GetCurrentProcessId', 
    ... 
] 

:Pythonの連結し、隣接する文字列リテラルは、あなたがどこか途中でカンマを見逃している必要があります。

+0

アドバイスをいただきありがとうございました。 – aminakoy

1

Counterには何もありません。 listOfSequencesには、必ず'CharNextAGetCurrentProcessId'の11回の出現が必要です。これは'CharNextAGetCurrentProcessId' in listOfSequencesで確認できます。

+0

実際、元のリストが問題でした。ありがとうございました :) – aminakoy

関連する問題