0

私は次の状況のた​​めの最良の解決策を見つけたいです:
私は次のアイテムを手に入れました:
item1含まれているものtest1test2
item2含まれているものtest3と含まれているものtest4

item3含まれているものtest5
superItemitem1item2item3

次の結果を達成するためにどの方法を使用する必要がありますか。変数に 受け取りたい
変数を取得しました...checktest1
resultitem1

言い換えれば、変数と同じテキストを含むアイテムの名前を受け取りたいcheck

最善の解決策は何ですか?

4

3 に答える 3

2

文字列アイテムとリスト内包表記を使用した単純なバージョン:

item1 = ["test1", "test2"]
item2 = ["test3", "test4"]
item3 = ["test5"]
superItem = [item1, item2, item3]

check = "test1"
result = [item for item in superItem if check in item]

>>> result
[["test1", "test2"]]
于 2013-03-25T10:48:10.303 に答える
1

以下のコードのように、これらの変数を辞書に保持すると仮定します。

container = {
    'item1': {'test1', 'test2'},
    'item2': {'test3', 'test4'},
    'item3': {'test5'}
}
    }
check = 'test1'

for key in container:
    if check in container[key]:
        break

result = container[key]
print result

編集

私はあなたのためにセットを追加しました-あなたはそれらのために使用{ }します。

于 2013-03-25T10:56:03.767 に答える
1

リスト内包表記を利用した私の実装。リスト名('itemn')はsuperItem dictに格納されるため、必要なときに取得できます。

item1 = ["test1", "test2"]
item2 = ["test3", "test4"]
item3 = ["test5"]

superItem = {
    'item1': item1,
    'item2': item2,
    'item3': item3
}

check = "test1"

result = [x for x in superItem if check in superItem[x]]

print result

性能テスト:

$ time python2.7 sometest.py 
['item1']

real    0m0.315s
user    0m0.191s
sys 0m0.077s
于 2013-03-25T11:16:26.070 に答える