74833


# 環境 - Python3.8

### 元コード(経緯について)

Slackのbotでpayloadを作成して投稿する部分を作成しています。

[code]

    # カラーコード
    color_dict = {
        0:"#adffad",1:"#adffff",
        2:"#ffffad",3:"#d6adff",
        4:"#ffd6ad",5:"#bfc0c1"
    }
    # パターン
    pattern1 = ['A','B','C','','E','']
    pattern2 = ['AA','BB','CC','DD','EE','FF']
    
    # パターン分の箱
    value,n1 = [''] * len(pattern1),[''] * len(pattern1)
    text,n2 = [''] * len(pattern2),[''] * len(pattern2)
    
    field = [{'title': n1[i], 'value': value[i]} for i in range(len(pattern1)) if value[i] != ""]
    color = "" if not field else "#f56c6c"
    
    data = [{'title': n2[i], 'text': text[i], 'color': color_dict.get(i)} for i in range(len(pattern2))]
    
    
    print (data)
    [
        {'title': '', 'text': '', 'color': '#adffad'},
        {'title': '', 'text': '', 'color': '#adffff'}, 
        {'title': '', 'text': '', 'color': '#ffffad'}, 
        {'title': '', 'text': '', 'color': '#d6adff'}, 
        {'title': '', 'text': '', 'color': '#ffd6ad'}, 
        {'title': '', 'text': '', 'color': '#bfc0c1'}
    ]
    # 見やすいように整形しています。
    
    
    payload = {
        "attachments": [{
                "fields" : field,
                "color" : color,
            },
            # 出力はされるがこんな感じでは書きたくない・・・・。
            data[0],data[1],
            data[2],data[3],
            data[4],data[5]
        ],
    }
    print (payload)
    
[/code]

dataの部分を上手いことできないか？ というところで、タイトルにもあるように辞書を全て出力する方法を知りたいというものです。

## dict型で以下のような結果が欲しい。

[code]

    print (ex)
    {"title":"","text":"","color":""},
    {"title":"","text":"","color":""},
    {"title":"","text":"","color":""},
    {"title":"","text":"","color":""}
    
[/code]

## 試したこと① 最後の結果しか表示されない。

[code]

    ex = {}
    for x in data:
        ex |= x
    print (ex)
    {'title': '', 'text': '', 'color': ''}
    
    print (type(ex))
    <class 'dict'>
    
[/code]

## 試したこと② str型に変わってしまう。

[code]

    s = ",".join(map(str,data))
    
    print (s)
    {'title': '', 'text': '', 'color': ''},
    {'title': '', 'text': '', 'color': ''},
    {'title': '', 'text': '', 'color': ''},
    {'title': '', 'text': '', 'color': ''}
    
    print (type(s))
    <class 'str'>
    
[/code]


CC BY-SA 4.0
2021-03-23T04:10:07.520
74832
2021-03-23T08:23:53.797
2021-03-23T08:23:36.863
43296
43296
question
python python3
リスト型内にある辞書を全て出力した結果が欲しい


`dict` を ',' で連結するデータ構造はありませんが  
データ構造の中に組み込むことは可能です

[code]

    payload = {
        "attachments": [{
                "fields" : "TEST",
                "color" : "#adffad",
            },
            *data
        ],
    }
    print(payload)
    
[/code]

* * *

参考  
[https://docs.python.org/ja/3/reference/expressions.html?highlight=アンパック](https://docs.python.org/ja/3/reference/expressions.html?highlight=%E3%82%A2%E3%83%B3%E3%83%91%E3%83%83%E3%82%AF)


CC BY-SA 4.0
2021-03-23T07:52:47.130
74833
2021-03-23T08:09:32.050
2021-03-23T08:09:32.050
43025
43025
74832
answer


以下の方法で解決しました。ご回答ありがとうございました。

[code]

    # カラーコード
    color_dict = {
        0:"#adffad",1:"#adffff",
        2:"#ffffad",3:"#d6adff",
        4:"#ffd6ad",5:"#bfc0c1"
    }
    # パターン
    pattern1 = ['A','B','C','','E','']
    pattern2 = ['AA','BB','CC','DD','EE','FF']
    
    # パターン分の箱
    value,n1 = [''] * len(pattern1),[''] * len(pattern1)
    text,n2 = [''] * len(pattern2),[''] * len(pattern2)
    
    field = [{'title': n1[i], 'value': value[i]} for i in range(len(pattern1)) if value[i] != ""]
    color = "" if not field else "#f56c6c"
    
    data = [{'title': n2[i], 'text': text[i], 'color': color_dict.get(i)} for i in range(len(pattern2))]
    
    payload = {
        "attachments": [{
                "fields" : field,
                "color" : color,
            },
            *data
        ],
    }
    print (payload)
    
[/code]


CC BY-SA 4.0
2021-03-23T08:04:03.513
74834
2021-03-23T08:23:53.797
2021-03-23T08:23:53.797
43296
43296
74832
answer