1

私は2つの辞書を持っています。例えば:

dict_a = {'verbs': ['run', 'go', 'eat'], 'nouns':['dog', 'cat', 'bear']}

dict_b = {'verbs': ['jump'], 'nouns': ['human']}

各リストのすべてのアイテムをdict_bから取得し、それらをdict_aの適切な場所に配置できる関数を作成しました。(つまり、dict_b'動詞'はdict_a'動詞'などになります...)

ただし、同じ単語がdict_aにある場合は、それらをdict_bから取り出す関数も作成する必要がありますが、少し迷っています。私はいくつかのことを書きましたが、どれもうまくいきませんでした。誰かが私のために仕事をしてくれるとは思っていませんが、誰かがヒントをくれたら...それは素晴らしいことです。

4

5 に答える 5

2

動詞/名詞の順序が重要でない場合は、リストの代わりにセットを使用することをお勧めします

>>> dict_a = {'verbs': {'run', 'go', 'eat'}, 'nouns':{'dog', 'cat', 'bear'}}
>>> dict_b = {'verbs': {'jump'}, 'nouns': {'human'}}
>>> for k in dict_a:
...  dict_a[k] |= dict_b[k]
... 
>>> dict_a
{'verbs': set(['go', 'jump', 'run', 'eat']), 'nouns': set(['human', 'dog', 'bear', 'cat'])}

あなたの質問の2番目の部分が何であるかについてはあまり明確ではありませんが、あるセットの要素を別のセットから削除するのは簡単です。

>>> for k in dict_a:
...  dict_a[k] -= dict_b[k]
... 
>>> dict_a
{'verbs': set(['go', 'run', 'eat']), 'nouns': set(['dog', 'bear', 'cat'])}

すなわち。元に戻すdict_a

于 2012-10-10T00:41:57.043 に答える
0

You could use pop, to remove the inspected element from the list.

Though might I suggest:

dict_a['verbs'] = dict_a['verbs'] + dict_b['verbs']
dict_a['nouns'] = dict_a['nouns'] + dict_b['nouns']

.

Another option, which may be preferable is to map the other way (and then you can update):

dict_c = {'run': 'verb', 'cat': 'noun',...}
dict_c = {'jump':'verb', 'human':'noun'}
dict_c.update(dict_d)
于 2012-10-09T23:18:11.640 に答える
0
dict_a = {'verbs': ['run', 'go', 'eat'], 'nouns':['dog', 'cat', 'bear']}
dict_b = {'verbs': ['jump'], 'nouns': ['human']}

def foo(dict_a, dict_b):
  for k,v in dict_b.iteritems():
    for word in v[:]:
      if word in dict_a.get(k, []):
        dict_b[k].remove(word)
于 2012-10-09T23:57:25.960 に答える
0

list.remove(x)

値がxであるリストから最初の項目を削除します。そのような項目がない場合はエラーになります。

Pythonのドキュメントから、ここにあります。それで十分かもしれませんが、そうでない場合は、いくつか追加します。

于 2012-10-09T23:10:33.677 に答える
0

まず、dict内包表記を使用して、両方の辞書をマージできます。

{key:dict_a[key] + dict_b[key] for key in dict_b if dict_a.has_key(key)}

または、dictの理解なしで:

for key in dict_b:
    if dict_a.has_key(key):
        dict_a[key] += dict_b[key]

辞書からアイテムを削除するのdict_bは簡単です。

for key in dict_a:
    if dict_b.has_key(key):
        del dict_b[key]
于 2012-10-10T00:06:24.747 に答える