I ended up using `dict[next(iter(dict))]`

I am getting the dict as one of two dicts nested in a list from a weather
service API. I do this using a list comprehension to call the API with
coordinates for each location in another list. A mouthful.

`resp = [fetch_api_data(location, request_id) for location in
REQUEST_LOCATIONS]`

I then cycle through the list and, for each dict, persist a WeatherRequest
instance to db like so:

`
for item in weather_data:
data = item[next(iter(item))]
WeatherRequest(
date=data['date'],
request_id=data['request_id'],
request_location=data['request_location'],
type_icon=data['type_icon'],
description=data['description'],
temperature=data['temperature'],
wind_speed=data['wind']['speed'],
wind_bearing=data['wind']['bearing'],
wind_gust=data['wind']['gust'],
rain_prob=data['rain_prob'],
latitude=data['latitude'],
longitude=data['longitude']
).save()
`

Thanks.


Kind regards,
- SD


On Mon, Jan 27, 2020 at 2:51 PM Bill Freeman <ke1g...@gmail.com> wrote:

> Note that these give the only value.  This won't work if you have more
> than one value in the dict, since you won't know which you will get.  Where
> d is the dict:
>
>     list(d.values())[0]
>
> or
>
>     for i in d.values():
>         # use i here
>         print(i)
>
> or
>
>     d[list(d)[0]]
>
> I'm sure that there are other ways.  There is certainly at least a way to
> play with the iterator protocol without using "for", but it may be harder
> to read.  You could put break at the end of the loop above to make it more
> apparent that it only runs once.
>
> On Mon, Jan 27, 2020 at 6:58 AM S D <zebr...@gmail.com> wrote:
>
>> I have a dictionary which contains one item (“current_location”, which is
>> a nested dict) and I would like to access that nested dict. However, I
>> cannot use the key as the code will break if a different key is passed,
>> e.g. “different_location”.
>>
>> How can I access the first item in a dictionary without using a key? The
>> dict looks like this:
>>
>> `
>> {'current_location': {'date': '2020-01-27T10:28:24.148Z', 'type_icon':
>> 'partly-cloudy-day', 'description': 'Mostly Cloudy', 'temperature': 68.28,
>> 'wind': {'speed': 10.48, 'bearing': 178, 'gust': 12.47}, 'rain_prob': 0.02,
>> 'latitude': '-33.927407', 'longitude': '18.415747', 'request_id': 31364,
>> 'request_location': 'Current location'}}
>> `
>>
>> Kind regards,
>> - SD
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to django-users+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/CAH-SnCBnnOsoTURnSzCrqqXsCWF5EEjghm9Q1UTQKrnTBAJ3iA%40mail.gmail.com
>> <https://groups.google.com/d/msgid/django-users/CAH-SnCBnnOsoTURnSzCrqqXsCWF5EEjghm9Q1UTQKrnTBAJ3iA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/CAB%2BAj0tFp_qOtqd3WMvPTfGkGy3q-jCFDwnrgheYjBk8NqP4bQ%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CAB%2BAj0tFp_qOtqd3WMvPTfGkGy3q-jCFDwnrgheYjBk8NqP4bQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAH-SnCBkMAJqVetRU_X46r-pg-HLDZsuTt4iqeYN%2BSpjSmbttA%40mail.gmail.com.

Reply via email to