简体   繁体   中英

How do I group elements in a list to be list of lists in python 3

I have this list of objects

[
{'latitude': 40.7136948694776, 'days': "['MON']", 'from_time': '11AM', 'longtitude': -73.9869100091687, 'to_time': '12:30PM', 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & THURS'},
{'latitude': 40.7136948694776, 'days': "['MON']", 'from_time': '11AM', 'longtitude': -73.9869100091687, 'to_time': '12:30PM', 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & FRI'},
{'latitude': 40.7136948694776, 'days': "['MON']", 'from_time': '11AM', 'longtitude': -73.9869100091688, 'to_time': '12:30PM', 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & WED'},
]

The first element and the second element has the same latitude and longtitude. I would like to group them together so the end result would be

[
  [
    {'latitude': 40.7136948694776, 'days': "['MON']", 'from_time': '11AM', 'longtitude': -73.9869100091687, 'to_time': '12:30PM', 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & THURS'},
    {'latitude': 40.7136948694776, 'days': "['MON']", 'from_time': '11AM', 'longtitude': -73.9869100091687, 'to_time': '12:30PM', 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & FRI'}
  ],
  [
    {'latitude': 40.7136948694776, 'days': "['MON']", 'from_time': '11AM', 'longtitude': -73.9869100091688, 'to_time': '12:30PM', 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & WED'}
  ]
]

How can I do this in a pythonic 3 way?

this isn't specific to python3 but it works without modification:

>>> from collections import defaultdict
>>> d=defaultdict(list)
>>> for item in a:
...  d[(item['latitude'],item['longtitude'])].append(item)
... 
>>> d
defaultdict(<type 'list'>, {(40.7136948694776, -73.9869100091688): [{'days': "['MON']", 'longtitude': -73.9869100091688, 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & WED', 'to_time': '12:30PM', 'latitude': 40.7136948694776, 'from_time': '11AM'}], (40.7136948694776, -73.9869100091687): [{'days': "['MON']", 'longtitude': -73.9869100091687, 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & THURS', 'to_time': '12:30PM', 'latitude': 40.7136948694776, 'from_time': '11AM'}, {'days': "['MON']", 'longtitude': -73.9869100091687, 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & FRI', 'to_time': '12:30PM', 'latitude': 40.7136948694776, 'from_time': '11AM'}]})
>>> d.values()
[[{'days': "['MON']", 'longtitude': -73.9869100091688, 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & WED', 'to_time': '12:30PM', 'latitude': 40.7136948694776, 'from_time': '11AM'}], [{'days': "['MON']", 'longtitude': -73.9869100091687, 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & THURS', 'to_time': '12:30PM', 'latitude': 40.7136948694776, 'from_time': '11AM'}, {'days': "['MON']", 'longtitude': -73.9869100091687, 'signdesc1': 'NO PARKING (SANITATION BROOM SYMBOL) 11AM TO 12:30PM MON & FRI', 'to_time': '12:30PM', 'latitude': 40.7136948694776, 'from_time': '11AM'}]]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM