90

リストとタプルの違いを(Python で)調べていました。明らかな 1 つは、タプルは不変 (最初の代入後に値を変更できない) であるのに対し、リストは可変であることです。

記事の文は私を手に入れました:

ディクショナリのキーとして使用できるのは不変要素のみであるため、リストではなくタプルのみをキーとして使用できます。

タプルを辞書のキーとして使用したい状況を考えるのに苦労しています。これが自然で、効率的で、洗練された、または明白な解決策となる問題の例を挙げていただけますか?

編集:

あなたの例をありがとう。これまでのところ、非常に重要なアプリケーションは関数値のキャッシングであると考えています。

4

12 に答える 12

123

古典的な例: ポイント値を (x, y) のタプルとして保存したい

于 2009-12-21T07:14:10.687 に答える
4
a[("John", "Doe")] = "123 Fake Street"
于 2009-12-21T07:06:05.183 に答える
2

基本的な分析ツールを構築している場合は、ファネル分析に使用できます。

たとえば、テキスト 2 にカーソルを合わせた後に画像 3 をクリックした人数を数えます。

    funnels = defaultdict(int)
    funnels[('hovered_text2', 'clicked_image3')] += 1
于 2014-07-09T20:56:34.420 に答える
2

ソートの場合は、タプルを使用するメリットがあるのではないでしょうか。たとえば、辞書のキーがソート フィールドを表しているとします (キーが にならないようにデフォルトのソート フィールドが存在することは明らかですNone)。姓、名の順で並べ替える場合など、複数の並べ替えフィールドが必要な場合は、辞書のキーとしてタプルを使用することをお勧めします。

確かに、そのようなアイデアは用途が限られているかもしれませんが、それがまったく役に立たないというわけではありません。

于 2009-12-21T07:22:40.730 に答える
1
def getHash(word):
    result={}
    for i in range(len(word)):
        if word[i] in result:
            result[word[i]]+=1
        else :
            result[word[i]]=1

    return tuple (sorted((result.items())))


def groupAnagrams(words):
    resultHash={}
    for i in range(len(words)):
        s=getHash(words[i].lower())
        #print s
        if s in resultHash :
            l=list(resultHash[s]) 
            l.append(words[i])
            resultHash[s] = l # list(resultHash[s]).append(words[i])  
        else :
            resultHash[s]=[words[i]] # Creating list 

    return resultHash.values()
于 2016-05-06T17:42:00.930 に答える