27878


初めて質問させていただきます。  
for文で生成した文字列をタプルに格納し、辞書型と結び付けたいです。

[code]

    factories = ['A', 'B', 'C', 'D']
    shops = ['1', '2', '3', '4', '5']
    
    cost      = ( 8, 10, 12, 16, 20,
                 12,  8,  6, 10, 16,
                 18,  7,  4,  3,  4,
                 12, 10, 12, 16, 20 )
    
    for f in factories:
            for s in shops:
                    root = f + s
                    print(root)
    
[/code]

文字列の生成までは終わったのですが...ここから先で躓いています><

[追記]  
keyはroot, valueはcostにして、変数patternに代入したいです。  
以下のようになるのが理想です

[code]

    pattern = { 'A1': 8, 'A2': 10, 'A3': 12 ... D5: 20 }
    
[/code]

お願いします。


CC BY-SA 3.0
2016-07-27T04:12:02.927
27871
2016-07-27T07:24:27.877
2016-07-27T05:29:49.433
14626
14626
question
python
for文で生成した文字列をタプルに格納する方法


keyをroot、valrueをcostで辞書にしてみました  
forでリストやタプルを作りたい場合は、リスト内包表記が便利です

[code]

    import itertools
    root = [''.join((x, y)) for x, y in itertools.product(factories, shops)]
    dict(zip(root, cost))
    
[/code]


CC BY-SA 3.0
2016-07-27T05:16:57.160
27872
2016-07-27T05:16:57.160
7754
27871
answer


一応ここまでしたいかを別にすれば dict で内包表記を使うこともできます．

[code]

    #!/usr/bin/env python3
    from itertools import product
    factories = ['A', 'B', 'C', 'D']
    shops = ['1', '2', '3', '4', '5']
    
    costs      = ( 8, 10, 12, 16, 20,
                 12,  8,  6, 10, 16,
                 18,  7,  4,  3,  4,
                 12, 10, 12, 16, 20 )
    
    
    d = {f+s : cost
             for ((f,s), cost) in zip(product(factories,shops), costs)}
    print(d)
    
[/code]


CC BY-SA 3.0
2016-07-27T07:24:27.877
27878
2016-07-27T07:24:27.877
2901
27871
answer