Pythonのdictionnaryでループの間、同じキーと値を追加します。

Vikman:

私は、Pythonの初心者ですと私は小さなプロジェクトに取り組んでいますが、私は出力が欲しかっ得ることができません。

これは私がメールのみのを維持し、重複値をせずにプロジェクトに関連付けるために持って、私が持っているエントリ値です。この私のエントリー:

my_dictionnary = [
    {
        "email": ["email1", "email2"],
        "project":"projet1",
        "project_name":"Project1"
    },
    {
        "email": ["email1", "email2"],
        "project":"projet2",
        "project_name":"Project2"

    },
    {
        "email": ["email2"],
        "project":"projet3",
        "project_name":"Project3"

    }
]

私は次のように出力に含まを作成したいと思います:

my_dictionnary_parsed = {
    "email2": ["projet1", "projet2", "projet3"],
    "email1": ["projet1", "projet2"]
}

私は、次の機能があります。

def formating_email(list_of_email):
    dictionnary={}
        for email_data in list_of_email_data:
            for cp in email_data['cp_related']:
                print(cp,email_data['ticket_related_project'])
                dictionnary[cp] = email_data

しかし、値がオーバーライド保ちます...

Prakhar Londhe:

現在の1が間違っているので、あなたは、正しい辞書構造を持っていると仮定すると、あなたが直接設定されていますdictionnary[cp] = email_dataそれはリストであるので、あなたが代わりに追加する必要があります。

また、としてあなたの変数に名前を付けないでくださいdictionnaryそれらにいくつかの有効な名前を付け、その機能に対応しているようなprojects_per_email、または何か他のもの。

def formating_email(list_of_email):
    dictionnary={}
        for email_data in list_of_email_data:
            for cp in email_data['cp_related']:
                print(cp,email_data['ticket_related_project'])
                if dictionnary.get(cp) == None:
                    dictionnary[cp] = [email_data]
                else:
                    dictionnary[cp].append(email_data)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=19655&siteId=1