首页 > 解决方案 > for循环中的Python字典和列表

问题描述

我的代码是这样的

for dict_item in data:
    MILLISECONDS = dict_item['Start_Time'].split('(')[1][:-2]
    mydict = {'Cinema_Name':dict_item['Cinema_Name'],
              'Movie_Time':datetime.datetime.fromtimestamp(int(MILLISECONDS)/1000.0).strftime('%B-%d-%Y %I:%M %p'),
ListOfJson.append(mydict)

输出是这个

 {
    "Cinema_Name": "Cinema 3",
    "Movie_Time": "October-13-2018 06:20 PM"
},
{
    "Cinema_Name": "Cinema 3",
    "Movie_Time": "October-13-2018 09:15 PM"
},
{
    "Cinema_Name": "Cinema 6",
    "Movie_Time": "October-12-2018 11:30 AM"
},
{
    "Cinema_Name": "Cinema 6",
    "Movie_Time": "October-12-2018 02:25 PM"
}

但我想要一个输出,它将所有与来的 Cinema_Name 合并并将他们的时间放在一个列表中。像这样的东西

{
    "Cinema_Name": "Cinema 3"
    "Movie_Time": " ["October-13-2018 06:20 PM","October-13-2018 09:15 PM"]
},
{
    "Cinema_Name": "Cinema 6"
    "Movie_Time: ["October-12-2018 11:30 AM" ,"October-12-2018 02:25 PM"]

无论如何我可以做到这一点吗?

标签: pythonpython-3.xdictionary

解决方案


您可以使用 dict 来跟踪Movie_Time新条目的第一个条目的列表,Cinema_Name以便可以将相同的后续条目Cinema_Name附加到同一列表中:

ListOfJson = [
    {
        "Cinema_Name": "Cinema 3",
        "Movie_Time": "October-13-2018 06:20 PM"
    },
    {
        "Cinema_Name": "Cinema 3",
        "Movie_Time": "October-13-2018 09:15 PM"
    },
    {
        "Cinema_Name": "Cinema 6",
        "Movie_Time": "October-12-2018 11:30 AM"
    },
    {
        "Cinema_Name": "Cinema 6",
        "Movie_Time": "October-12-2018 02:25 PM"
    }
]
l = []
index = {}
for d in ListOfJson:
    if d['Cinema_Name'] in index:
        index[d['Cinema_Name']].append(d['Movie_Time'])
    else:
        index[d['Cinema_Name']] = d['Movie_Time'] = [d['Movie_Time']]
        l.append(d)
print(l)

使用您的示例输入,l将变为:

[{'Cinema_Name': 'Cinema 3', 'Movie_Time': ['October-13-2018 06:20 PM', 'October-13-2018 09:15 PM']}, {'Cinema_Name': 'Cinema 6', 'Movie_Time': ['October-12-2018 11:30 AM', 'October-12-2018 02:25 PM']}]


推荐阅读