Bu kolaydır. Her ülkeyi bir saat dilimleri listesine eşleyen bir dict
adresiniz vardır. Her list
üyesinin tekrar dict
numarasına eşlemek istiyorsunuz.
Sadece cevabı vermek yerine, nasıl elde edeceğimizi görelim. Eğer sadece tek bir saat dilimine göre her ülkeyi haritalama bir dict
olsaydı
Birincisi, bu basit bir ters haritalama olacaktır:
timezone_countries = {timezone: country
for country, timezone in country_timezones.iteritems()}
Ancak bu işe yaramaz; Saat dilimleri listesiyle eşleşiyorsunuz ve o listeden her bir saat dilimini ülkeye geri eşlemek istiyorsunuz. Yani İngiliz açıklaması "o listedeki her zaman dilimi" Python için trivially çevrilebilir şudur: eyleme İşte
timezone_countries = {timezone: country
for country, timezones in country_timezones.iteritems()
for timezone in timezones}
:
>>> from pytz import country_timezones
>>> timezone_countries = {timezone: country
for country, timezones in country_timezones.iteritems()
for timezone in timezones}
>>> timezone_countries['Europe/Zurich']
u'CH'
Yan not: Python 2 ve 3-bahsetmedi, Bu yüzden, 3'ü kabul ettiyseniz, iteritems
'u items
olarak değiştirin ve çıktı, u'CH'
yerine 'CH'
olacaktır. Farklı ülkelerde aynı saat dilimi adı kullanılıyorsa,
. Country_timezones'de böyle bir isim yok. Ama bazı ortak zaman dilimleri, örneğin, UTC, ABD/Merkez, ABD/Doğu, Kanada/Merkez, vb değildir. – jfs
@ J.F.Sebastian son cümlenin ne demek istediniz? Bu saat dilimleri neyin içinde değil? – Snowman
"pytz" öğesinde tanımlanan tüm saat dilimleri, tam olarak bir ülkeye eşlenir. Böylece kırılmaz. – jsalonen