myObject = [('1', 'First'), ('2', 'Second')]
CHOICES = set(myObject)
def set_choices():
global CHOICES
CHOICES.clear() # Remove the element from set CHOICES
# Do some of your changes here
anotherObject = [('3', 'Third'), ('4', 'Fourth')]
CHOICES[:] = set(anotherObject)
print(CHOICES) # Before calling set_choices
set_choices()
print(CHOICES) # After you calling set_choices
これはうまくいくと思います。しかし、私はsetとtupleを使うのが良いアイデアなのかどうか分からないので、私は個人的にあなたの代わりにリストのリストを使うことを勧めます。他のオプションの代わりにセットを使用する特別な理由はありますか?
出力:
CHOICES = [['1', 'First'], ['2', 'Second']]
def set_choices():
# Changed since the comment of another member aaronasterling
# Removed the use of global
CHOICES[:] = [['3', 'Third'], ['4', 'Fourth']]
print(CHOICES)
set_choices()
print(CHOICES)
出力:
[['1', 'First'], ['2', 'Second']]
[['3', 'Third'], ['4', 'Fourth']]
このSO question & answerをチェックアウトし、スライスの割り当ての詳細については、リストを使用するには、あなたのコメントへ
{('2', 'Second'), ('1', 'First')}
{('4', 'Fourth'), ('3', 'Third')}
応答します。
あなたはすでに書いたものとどのように違うのですか?私は何かが欠けていると感じている。 – Cameron
プログラムで実際にあなたの関数 'set_choices()'を呼び出しましたか?または、他に情報がありませんか?そして、あなたの選択はリストまたはセットであるはずですか? – George
元のプログラムでset_choices()を呼び出しました。はい、それはセットになるはずです。 私がやっていることは、1つの関数でset_choices()を呼び出すことです。次に別のファイルで、配列CHOICESをインポートしています。最初の関数でset_choicesを呼び出し、次に配列をインポートすると、実際には変更は反映されません。 –