1

2 つのリストがある場合:

l_Y = [1, 2] 
l_Z = [3, 4]

この結果を達成する最も簡単な方法は何ですか?:

[{'a':1, 'b':1, 'c':'Y'}, {'a':2, 'b':2, 'c':'Y'}...
{'a':3, 'b':3, 'c':'Z'}, {'a':4, 'b':4, 'c':'Z'}]

基本的に、リスト l_Y の場合、c の値は Y である必要があり、l_Z の場合、c の値は Z である必要があります。

私はこれを試しました:

[{'a':nb, 'b':nb, 'c':letter} for nb in [l_Y, l_Z] letter='Y' if nb is l_Y else 'Z']

しかし、「SyntaxError」が発生しました

とにかく nb は要素ではなく完全なリストを返すので、これを行う方法がわかりません...

4

2 に答える 2

2

以下を使用できます (リストを辞書や条件式に入れる必要はありません)。

[{'a':v, 'b':v, 'c':c} 
    for (l, c) in zip((l_Y, l_Z), ('Y', 'Z')) 
        for v in l]
于 2013-08-07T23:18:11.507 に答える