我的代码就是这样
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"]
反正我能做到吗?
答案 0 :(得分:1)
您可以使用字典来跟踪新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']}]
答案 1 :(得分:0)
创建一个新的dict
并创建您的列表。不需要奇特的代码或List
解析。只需两行代码:[obj["Movie_Time"] for obj in myDict if obj["Cinema_Name"] == "Cinema 3"]
,另一行则用于Cinema 6
,如下所示。
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"
}
]
ListOfJson = [
{
"Cinema_Name": "Cinema 3",
"Movie_Time": [obj["Movie_Time"] for obj in myDict if obj["Cinema_Name"] == "Cinema 3"]
},
{
"Cinema_Name": "Cinema 6",
"Movie_Time": [obj["Movie_Time"] for obj in myDict if obj["Cinema_Name"] == "Cinema 6"]
}
]
print(ListOfJson)
输出:
[
{
'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'
]
}
]
答案 2 :(得分:0)
您可以在迭代列表时使用时间字典来索引电影院,并可以附加电影时间:
temp_dict = {}
for dict_item in data:
movie_time = datetime.datetime.fromtimestamp(int(MILLISECONDS)/1000.0).strftime('%B-%d-%Y %I:%M %p')
if dict_item['Cinema_Name'] not in temp_dict:
temp_dict[dict_item['Cinema_Name']] = {
'Cinema_Name':dict_item['Cinema_Name'],
'Movie_Time': []
}
temp_dict[dict_item['Cinema_Name']]['Movie_Time'].append(movie_time)
ListOfJson = list(temp_dict.values())