0

key= 'keys' の辞書があるとしましょう

>>> keys
'taste'

数行後..出力

>>> {'taste': ('sweet', 'sour', 'juicy', 'melon-like')}

このコード スニペット

from collections import defaultdict
agent=defaultdict(str)
key_list=[]

key_list=[(keys,tuple(key_list))]
agent=dict(key_list)
#agent[keys]+=key_list

私が知りたいのは、私が持っていると言う方法はありますかagent= {'taste': ('sweet', 'sour', 'juicy', 'melon-like')}

リストに追加したい

key_list=['yuck!','tasty','smoothie']

agent.setdefault('taste',[]).append(key_list)

次のような出力があります。

 {'taste': ('sweet', 'sour', 'juicy', 'melon-like','yuck!','tasty','smoothie')}

それ以外の

{'taste': ('sweet', 'sour', 'juicy', 'melon-like',['yuck!','tasty','smoothie'])}

その方法はありますか?

要するに:

  1. 辞書のキーの値である既存のリストにリストを追加したい (その特定のキーを見つけるための反復なし)
  2. リストとして供給されている要素に、特定のキーの値であるそのリスト内の要素が既に含まれているかどうかを確認します。ここでは「味」と言います (ここのように文字列である可能性があります)。
4

4 に答える 4

4

これをチェックしてください:

>>> tst =  {'taste': ('sweet', 'sour', 'juicy', 'melon-like')}
>>> tst.get('taste', ()) #default to () if does not exist.  
('sweet', 'sour', 'juicy', 'melon-like')
>>> key_list=['yuck!','tasty','smoothie']
>>> tst['taste'] = tst.get('taste') + tuple(key_list)
>>> tst
{'taste': ('sweet', 'sour', 'juicy', 'melon-like', 'yuck!', 'tasty', 'smoothie')}

取得するには、

>>> tst = {'taste': ('sweet', 'sour', 'juicy', 'melon-like', 'yuck!', 'tasty', 'smoothie')}
>>> taste = tst.get('taste')
>>> taste
('sweet', 'sour', 'juicy', 'melon-like', 'yuck!', 'tasty', 'smoothie')
>>> 'sour' in taste
True
>>> 'sour1' in taste
False
于 2013-05-13T20:42:33.777 に答える
1

では、ここで 3 つの質問があります。

  1. extend別のリストから要素を追加するリストを作成できます。
    [1,2,3].extend([4,5]) # [1,2,3,4,5]

  2. 不変のタプルがあるため、既存のタプルにタプルを追加するだけです。
    (1,2,3) + (4,5) # (1, 2, 3, 4, 5)

  3. 重複したくない場合は、 を使用しset、それらを結合することができます: {1,2}.union({2,3}) # set([1,2,3])
    ここで 2 が重複していない方法を参照してください。ただし、セットは順序を保持しないことに注意してください。

最後に、重複を削除したいが順序を気にしない場合は、2 と 3 を組み合わせることができます。
set(old_value).union(set(new_value))

それ以外の場合、順序を維持する必要がある場合は、次の質問を参照してください: 元のリストの重複を削除せずに、2 つのリストを結合して重複を削除する

于 2013-05-13T20:41:31.427 に答える
0

あなたはextend機能が欲しい:

In [6]: l = [1,2,3]

In [7]: l2 = [4,5]

In [9]: l.extend(l2)

In [10]: l
Out[10]: [1, 2, 3, 4, 5]

ただし、キーの値をタプルではなくリストにする必要があります

于 2013-05-13T20:41:14.410 に答える
0

を置き換えてagentいるため、最初のdefaultdictものは使用されません。また、値を変更する場合、タプルは不変であるため、使用する方法ではありません。

で始める

from collections import defaultdict
agent = defaultdict(list)

その後

agent[key] += 'item' 

また

agent[key].extend(list_of_items)
于 2013-05-13T20:46:23.407 に答える