Replace list using dictionary - python

Biological RNA:
rna = AGCACGUAGCUGACUGACUGA
protein_chart = {"UUU":"F", "UUC":"F", "UUA":"L", "UUG":"L",
"UCU":"S", "UCC":"s", "UCA":"S", "UCG":"S",
"UAU":"Y", "UAC":"Y", "UAA":"STOP", "UAG":"STOP",
"UGU":"C", "UGC":"C", "UGA":"STOP", "UGG":"W",
"CUU":"L", "CUC":"L", "CUA":"L", "CUG":"L",
"CCU":"P", "CCC":"P", "CCA":"P", "CCG":"P",
"CAU":"H", "CAC":"H", "CAA":"Q", "CAG":"Q",
"CGU":"R", "CGC":"R", "CGA":"R", "CGG":"R",
"AUU":"I", "AUC":"I", "AUA":"I", "AUG":"M",
"ACU":"T", "ACC":"T", "ACA":"T", "ACG":"T",
"AAU":"N", "AAC":"N", "AAA":"K", "AAG":"K",
"AGU":"S", "AGC":"S", "AGA":"R", "AGG":"R",
"GUU":"V", "GUC":"V", "GUA":"V", "GUG":"V",
"GCU":"A", "GCC":"A", "GCA":"A", "GCG":"A",
"GAU":"D", "GAC":"D", "GAA":"E", "GAG":"E",
"GGU":"G", "GGC":"G", "GGA":"G", "GGG":"G",}
I want to split the rna into groups of 3 and replace all of those items with their representative components from the "protein_chart" dictionary, but I can't seem to get it to work using other examples I found.
Help?

You can do it using join and slicing:
print(''.join(protein_chart[x] for x in [rna[y:y+3] for y in range(0, len(rna), 3)]))

You could use:
# Split the rna vector into chunks of three
rna = 'AGCACGUAGCUGACUGACUGA'
n = 3
rna_split = [rna[i:i+n] for i in range(0, len(rna), n)]
# Go through dictionary looking for entries and printing them
for dna_el in rna_split:
print(protein_chart[dna_el])

Related

GeoJson object (layer) not being added to Folium map

Have looked at previous similar questions and implemented suggestions but I am still having trouble getting a layer to appear on a Folium map. Basically I have used Here's isoline API to create an array of GeoJson data objects (these are bascially areas reacjable within certain drivetimes). I can render these drivetimes on a Here map but would like to use Folium as I think it's easier to set layer colors etc.
So the GeoJson objects (drivetimes) are stored in an array called "values".
My code is as follows:
# Create the map
m = folium.Map(location=[latitude, longitude], zoom_start=13)
# Add a marker to the map
folium.Marker(
[latitude, longitude]
).add_to(m)
# Add the layer
folium.GeoJson(data=value[0], name="geojson").add_to(m)
folium.LayerControl().add_to(m)
m
An example of one of the drivetimes is as follows, any help would be appreciated:
{"data": {"features": [{"geometry": {"coordinates": [[[-6.643639, 53.382568], [-6.635742, 53.382568], [-6.633682, 53.381882], [-6.632309, 53.380508], [-6.630249, 53.379822], [-6.622009, 53.379822], [-6.619949, 53.379135], [-6.618576, 53.377762], [-6.616516, 53.377075], [-6.611023, 53.377075], [-6.608963, 53.376389], [-6.60759, 53.375015], [-6.60553, 53.374329], [-6.600037, 53.374329], [-6.597977, 53.375015], [-6.596603, 53.376389], [-6.594543, 53.377075], [-6.586304, 53.377075], [-6.584244, 53.376389], [-6.58287, 53.372269], [-6.580811, 53.371582], [-6.564331, 53.371582], [-6.562271, 53.372269], [-6.560898, 53.373642], [-6.558838, 53.374329], [-6.556091, 53.374329], [-6.554031, 53.373642], [-6.552658, 53.372269], [-6.550598, 53.371582], [-6.548538, 53.372269], [-6.547852, 53.374329], [-6.547852, 53.377075], [-6.547165, 53.379135], [-6.544418, 53.381882], [-6.542358, 53.382568], [-6.540298, 53.381882], [-6.538925, 53.380508], [-6.537552, 53.380508], [-6.536179, 53.381882], [-6.534119, 53.382568], [-6.525879, 53.382568], [-6.523819, 53.381882], [-6.522446, 53.377762], [-6.520386, 53.377075], [-6.514893, 53.377075], [-6.512833, 53.376389], [-6.511459, 53.375015], [-6.509399, 53.374329], [-6.50116, 53.374329], [-6.4991, 53.373642], [-6.497726, 53.372269], [-6.495667, 53.371582], [-6.493607, 53.372269], [-6.493607, 53.373642], [-6.497726, 53.377762], [-6.498413, 53.379822], [-6.497726, 53.381882], [-6.49498, 53.384628], [-6.49292, 53.385315], [-6.490173, 53.385315], [-6.488113, 53.384628], [-6.48674, 53.383255], [-6.48468, 53.382568], [-6.479187, 53.382568], [-6.477127, 53.381882], [-6.475754, 53.380508], [-6.471634, 53.379135], [-6.470261, 53.377762], [-6.468201, 53.377075], [-6.465454, 53.377075], [-6.463394, 53.377762], [-6.463394, 53.379135], [-6.466141, 53.381882], [-6.470261, 53.383255], [-6.473007, 53.386002], [-6.473694, 53.388062], [-6.473694, 53.396301], [-6.47438, 53.398361], [-6.4785, 53.399734], [-6.479187, 53.401794], [-6.479187, 53.404541], [-6.479874, 53.406601], [-6.481934, 53.407288], [-6.483994, 53.406601], [-6.485367, 53.402481], [-6.487427, 53.401794], [-6.495667, 53.401794], [-6.497726, 53.402481], [-6.4991, 53.406601], [-6.500473, 53.406601], [-6.501846, 53.405228], [-6.503906, 53.404541], [-6.514893, 53.404541], [-6.516953, 53.405228], [-6.517639, 53.407288], [-6.517639, 53.410034], [-6.516953, 53.412094], [-6.514893, 53.412781], [-6.512146, 53.412781], [-6.510086, 53.413467], [-6.508713, 53.414841], [-6.504593, 53.416214], [-6.50322, 53.417587], [-6.4991, 53.418961], [-6.498413, 53.421021], [-6.4991, 53.42308], [-6.50116, 53.423767], [-6.517639, 53.423767], [-6.519699, 53.424454], [-6.521072, 53.428574], [-6.525192, 53.429947], [-6.526566, 53.43132], [-6.530685, 53.432693], [-6.533432, 53.43544], [-6.534119, 53.4375], [-6.533432, 53.43956], [-6.530685, 53.442307], [-6.528625, 53.442993], [-6.525879, 53.442993], [-6.523819, 53.442307], [-6.522446, 53.440933], [-6.518326, 53.43956], [-6.516953, 53.438187], [-6.514893, 53.4375], [-6.512146, 53.4375], [-6.510086, 53.436813], [-6.508713, 53.43544], [-6.506653, 53.434753], [-6.50116, 53.434753], [-6.4991, 53.434067], [-6.497726, 53.432693], [-6.493607, 53.43132], [-6.492233, 53.429947], [-6.49086, 53.429947], [-6.489487, 53.43132], [-6.485367, 53.432693], [-6.48468, 53.434753], [-6.485367, 53.436813], [-6.489487, 53.438187], [-6.490173, 53.440247], [-6.489487, 53.442307], [-6.488113, 53.44368], [-6.488113, 53.445053], [-6.49086, 53.4478], [-6.49292, 53.448486], [-6.498413, 53.448486], [-6.500473, 53.4478], [-6.501846, 53.446426], [-6.503906, 53.44574], [-6.509399, 53.44574], [-6.511459, 53.446426], [-6.512146, 53.448486], [-6.512146, 53.451233], [-6.512833, 53.453293], [-6.514893, 53.453979], [-6.517639, 53.453979], [-6.519699, 53.454666], [-6.521072, 53.456039], [-6.525192, 53.457413], [-6.527939, 53.460159], [-6.528625, 53.462219], [-6.527939, 53.464279], [-6.525192, 53.467026], [-6.523132, 53.467712], [-6.521072, 53.467026], [-6.519699, 53.465652], [-6.517639, 53.464966], [-6.515579, 53.465652], [-6.515579, 53.467026], [-6.536179, 53.487625], [-6.536865, 53.489685], [-6.536865, 53.492432], [-6.536179, 53.494492], [-6.534119, 53.495178], [-6.528625, 53.495178], [-6.526566, 53.494492], [-6.511459, 53.479385], [-6.509399, 53.478699], [-6.506653, 53.478699], [-6.504593, 53.479385], [-6.50322, 53.480759], [-6.50116, 53.481445], [-6.4991, 53.480759], [-6.497726, 53.479385], [-6.493607, 53.478012], [-6.481247, 53.465652], [-6.479874, 53.465652], [-6.4785, 53.469772], [-6.477127, 53.471146], [-6.477127, 53.472519], [-6.4785, 53.473892], [-6.479187, 53.475952], [-6.4785, 53.478012], [-6.475754, 53.480759], [-6.473694, 53.481445], [-6.470947, 53.481445], [-6.468887, 53.480759], [-6.466141, 53.478012], [-6.465454, 53.475952], [-6.465454, 53.470459], [-6.464767, 53.468399], [-6.462021, 53.465652], [-6.457901, 53.464279], [-6.457214, 53.462219], [-6.457214, 53.459473], [-6.457901, 53.457413], [-6.459961, 53.456726], [-6.465454, 53.456726], [-6.467514, 53.456039], [-6.470261, 53.453293], [-6.470261, 53.45192], [-6.467514, 53.449173], [-6.463394, 53.4478], [-6.462021, 53.446426], [-6.459961, 53.44574], [-6.448975, 53.44574], [-6.446915, 53.446426], [-6.445541, 53.450546], [-6.443481, 53.451233], [-6.437988, 53.451233], [-6.435928, 53.450546], [-6.434555, 53.449173], [-6.430435, 53.4478], [-6.429749, 53.44574], [-6.430435, 53.44368], [-6.431808, 53.442307], [-6.431808, 53.440933], [-6.430435, 53.43956], [-6.429749, 53.4375], [-6.430435, 53.43544], [-6.434555, 53.434067], [-6.435928, 53.432693], [-6.437988, 53.432007], [-6.440735, 53.432007], [-6.442795, 53.432693], [-6.444168, 53.434067], [-6.445541, 53.434067], [-6.446915, 53.429947], [-6.451035, 53.428574], [-6.451721, 53.426514], [-6.451035, 53.424454], [-6.446915, 53.42308], [-6.445541, 53.421707], [-6.444168, 53.421707], [-6.437302, 53.428574], [-6.433182, 53.429947], [-6.431808, 53.43132], [-6.429749, 53.432007], [-6.424255, 53.432007], [-6.422195, 53.43132], [-6.418076, 53.4272], [-6.416016, 53.426514], [-6.405029, 53.426514], [-6.402969, 53.425827], [-6.401596, 53.424454], [-6.397476, 53.42308], [-6.396103, 53.421707], [-6.394043, 53.421021], [-6.391983, 53.421707], [-6.387863, 53.425827], [-6.383743, 53.4272], [-6.383057, 53.42926], [-6.383743, 53.43132], [-6.385803, 53.432007], [-6.391296, 53.432007], [-6.393356, 53.432693], [-6.39473, 53.434067], [-6.39679, 53.434753], [-6.399536, 53.434753], [-6.401596, 53.43544], [-6.402283, 53.4375], [-6.402283, 53.440247], [-6.401596, 53.442307], [-6.399536, 53.442993], [-6.383057, 53.442993], [-6.380997, 53.44368], [-6.376877, 53.4478], [-6.374817, 53.448486], [-6.369324, 53.448486], [-6.367264, 53.4478], [-6.365891, 53.446426], [-6.363831, 53.44574], [-6.361771, 53.446426], [-6.361084, 53.448486], [-6.361084, 53.451233], [-6.361771, 53.453293], [-6.363831, 53.453979], [-6.369324, 53.453979], [-6.371384, 53.454666], [-6.37207, 53.456726], [-6.37207, 53.459473], [-6.371384, 53.461533], [-6.37001, 53.462906], [-6.37001, 53.464279], [-6.371384, 53.465652], [-6.372757, 53.469772], [-6.383743, 53.480759], [-6.385803, 53.481445], [-6.38855, 53.481445], [-6.39061, 53.482132], [-6.391983, 53.483505], [-6.396103, 53.484879], [-6.397476, 53.486252], [-6.399536, 53.486938], [-6.410522, 53.486938], [-6.412582, 53.487625], [-6.413956, 53.488998], [-6.418076, 53.490372], [-6.423569, 53.495865], [-6.424255, 53.497925], [-6.424255, 53.500671], [-6.424942, 53.502731], [-6.426315, 53.504105], [-6.427002, 53.506165], [-6.427002, 53.514404], [-6.426315, 53.516464], [-6.424255, 53.517151], [-6.418762, 53.517151], [-6.416702, 53.516464], [-6.413956, 53.513718], [-6.413269, 53.511658], [-6.413269, 53.506165], [-6.412582, 53.504105], [-6.411209, 53.502731], [-6.409836, 53.498611], [-6.408463, 53.498611], [-6.407089, 53.499985], [-6.405029, 53.500671], [-6.399536, 53.500671], [-6.397476, 53.501358], [-6.39679, 53.503418], [-6.39679, 53.506165], [-6.396103, 53.508224], [-6.394043, 53.508911], [-6.38855, 53.508911], [-6.38649, 53.508224], [-6.379623, 53.501358], [-6.377563, 53.500671], [-6.37207, 53.500671], [-6.37001, 53.499985], [-6.368637, 53.498611], [-6.364517, 53.497238], [-6.363831, 53.495178], [-6.363831, 53.492432], [-6.364517, 53.490372], [-6.368637, 53.488998], [-6.368637, 53.487625], [-6.367264, 53.486252], [-6.365891, 53.482132], [-6.363144, 53.479385], [-6.361084, 53.478699], [-6.352844, 53.478699], [-6.350784, 53.478012], [-6.348038, 53.475266], [-6.348038, 53.473892], [-6.349411, 53.472519], [-6.350098, 53.470459], [-6.349411, 53.468399], [-6.348038, 53.468399], [-6.346664, 53.469772], [-6.344604, 53.470459], [-6.339111, 53.470459], [-6.337051, 53.469772], [-6.331558, 53.464279], [-6.330872, 53.462219], [-6.331558, 53.460159], [-6.335678, 53.458786], [-6.335678, 53.457413], [-6.332932, 53.454666], [-6.330872, 53.453979], [-6.319885, 53.453979], [-6.317825, 53.454666], [-6.317139, 53.456726], [-6.317139, 53.459473], [-6.316452, 53.461533], [-6.314392, 53.462219], [-6.303406, 53.462219], [-6.301346, 53.462906], [-6.299973, 53.464279], [-6.297913, 53.464966], [-6.295166, 53.464966], [-6.293106, 53.464279], [-6.290359, 53.461533], [-6.288986, 53.457413], [-6.286926, 53.456726], [-6.27594, 53.456726], [-6.27388, 53.456039], [-6.271133, 53.453293], [-6.26976, 53.449173], [-6.268387, 53.449173], [-6.267014, 53.450546], [-6.264954, 53.451233], [-6.256714, 53.451233], [-6.254654, 53.450546], [-6.253281, 53.448486], [-6.251907, 53.447113], [-6.250534, 53.4478], [-6.249161, 53.449173], [-6.247787, 53.453293], [-6.245728, 53.453979], [-6.234741, 53.453979], [-6.232681, 53.454666], [-6.228561, 53.458786], [-6.226501, 53.459473], [-6.221008, 53.459473], [-6.218948, 53.460159], [-6.218948, 53.461533], [-6.220322, 53.462906], [-6.221008, 53.464966], [-6.221008, 53.475952], [-6.220322, 53.478012], [-6.218262, 53.478699], [-6.215515, 53.478699], [-6.213455, 53.479385], [-6.212769, 53.481445], [-6.212769, 53.489685], [-6.212082, 53.491745], [-6.207962, 53.495865], [-6.207275, 53.497925], [-6.207275, 53.508911], [-6.206589, 53.510971], [-6.204529, 53.511658], [-6.199036, 53.511658], [-6.196976, 53.510971], [-6.194229, 53.508224], [-6.193542, 53.506165], [-6.193542, 53.495178], [-6.194229, 53.493118], [-6.195602, 53.491745], [-6.195602, 53.490372], [-6.194229, 53.488998], [-6.193542, 53.486938], [-6.193542, 53.484192], [-6.192856, 53.482132], [-6.191483, 53.480759], [-6.190796, 53.478699], [-6.191483, 53.476639], [-6.195602, 53.472519], [-6.196289, 53.470459], [-6.196289, 53.451233], [-6.195602, 53.449173], [-6.191483, 53.4478], [-6.188736, 53.445053], [-6.188049, 53.442993], [-6.188736, 53.440933], [-6.191483, 53.438187], [-6.193542, 53.4375], [-6.199036, 53.4375], [-6.201096, 53.436813], [-6.206589, 53.43132], [-6.206589, 53.429947], [-6.204529, 53.42926], [-6.193542, 53.42926], [-6.191483, 53.428574], [-6.190109, 53.4272], [-6.188049, 53.426514], [-6.185303, 53.426514], [-6.183243, 53.425827], [-6.182556, 53.423767], [-6.183243, 53.421707], [-6.183929, 53.420334], [-6.182556, 53.418961], [-6.17981, 53.418274], [-6.174316, 53.418274], [-6.172256, 53.417587], [-6.170883, 53.413467], [-6.166763, 53.412094], [-6.164017, 53.409348], [-6.162643, 53.405228], [-6.158524, 53.403854], [-6.155777, 53.401108], [-6.15509, 53.399048], [-6.155777, 53.396988], [-6.158524, 53.394241], [-6.162643, 53.392868], [-6.16333, 53.390808], [-6.16333, 53.388062], [-6.162643, 53.386002], [-6.160583, 53.385315], [-6.157837, 53.385315], [-6.155777, 53.386002], [-6.154404, 53.387375], [-6.152344, 53.388062], [-6.144104, 53.388062], [-6.142044, 53.387375], [-6.141357, 53.385315], [-6.141357, 53.382568], [-6.142044, 53.380508], [-6.144791, 53.377762], [-6.146851, 53.377075], [-6.149597, 53.377075], [-6.151657, 53.376389], [-6.152344, 53.374329], [-6.152344, 53.371582], [-6.15303, 53.369522], [-6.15509, 53.368835], [-6.157837, 53.368835], [-6.159897, 53.368149], [-6.16127, 53.366776], [-6.16539, 53.365402], [-6.168137, 53.362656], [-6.168137, 53.361282], [-6.166763, 53.359909], [-6.166077, 53.357849], [-6.166077, 53.355103], [-6.166763, 53.353043], [-6.168823, 53.352356], [-6.177063, 53.352356], [-6.179123, 53.353043], [-6.180496, 53.354416], [-6.182556, 53.355103], [-6.185303, 53.355103], [-6.187363, 53.354416], [-6.188049, 53.352356], [-6.188049, 53.346863], [-6.188736, 53.344803], [-6.190109, 53.34343], [-6.190796, 53.34137], [-6.190796, 53.338623], [-6.191483, 53.336563], [-6.193542, 53.335876], [-6.201782, 53.335876], [-6.203842, 53.33519], [-6.203842, 53.333817], [-6.202469, 53.332443], [-6.201096, 53.328323], [-6.199722, 53.32695], [-6.199036, 53.32489], [-6.199036, 53.319397], [-6.198349, 53.317337], [-6.195602, 53.31459], [-6.191483, 53.313217], [-6.190109, 53.311844], [-6.185989, 53.310471], [-6.185303, 53.308411], [-6.185303, 53.305664], [-6.185989, 53.303604], [-6.188049, 53.302917], [-6.190796, 53.302917], [-6.192856, 53.302231], [-6.194229, 53.298111], [-6.195602, 53.296738], [-6.196976, 53.292618], [-6.199036, 53.291931], [-6.207275, 53.291931], [-6.209335, 53.292618], [-6.210709, 53.293991], [-6.212769, 53.294678], [-6.221008, 53.294678], [-6.223068, 53.293991], [-6.224442, 53.289871], [-6.232681, 53.281631], [-6.236801, 53.280258], [-6.237488, 53.278198], [-6.236801, 53.276138], [-6.234741, 53.275452], [-6.210022, 53.275452], [-6.207962, 53.274765], [-6.206589, 53.273392], [-6.202469, 53.272018], [-6.201782, 53.269958], [-6.201782, 53.267212], [-6.202469, 53.265152], [-6.204529, 53.264465], [-6.210022, 53.264465], [-6.212082, 53.265152], [-6.213455, 53.266525], [-6.215515, 53.267212], [-6.237488, 53.267212], [-6.239548, 53.266525], [-6.240921, 53.265152], [-6.242981, 53.264465], [-6.245728, 53.264465], [-6.247787, 53.263779], [-6.249161, 53.262405], [-6.251221, 53.261719], [-6.25946, 53.261719], [-6.26152, 53.262405], [-6.262894, 53.263779], [-6.264954, 53.264465], [-6.270447, 53.264465], [-6.272507, 53.263779], [-6.27388, 53.262405], [-6.27594, 53.261719], [-6.289673, 53.261719], [-6.291733, 53.262405], [-6.293106, 53.263779], [-6.295166, 53.264465], [-6.300659, 53.264465], [-6.302719, 53.265152], [-6.304092, 53.266525], [-6.306152, 53.267212], [-6.314392, 53.267212], [-6.316452, 53.266525], [-6.316452, 53.265152], [-6.312332, 53.263779], [-6.311646, 53.261719], [-6.312332, 53.259659], [-6.315079, 53.256912], [-6.317139, 53.256226], [-6.322632, 53.256226], [-6.324692, 53.256912], [-6.328812, 53.261032], [-6.332932, 53.262405], [-6.334305, 53.263779], [-6.336365, 53.264465], [-6.347351, 53.264465], [-6.349411, 53.265152], [-6.350784, 53.266525], [-6.352158, 53.266525], [-6.353531, 53.265152], [-6.355591, 53.264465], [-6.363831, 53.264465], [-6.365891, 53.265152], [-6.366577, 53.267212], [-6.366577, 53.269958], [-6.367264, 53.272018], [-6.369324, 53.272705], [-6.377563, 53.272705], [-6.379623, 53.273392], [-6.380997, 53.277512], [-6.383057, 53.278198], [-6.385117, 53.277512], [-6.38649, 53.276138], [-6.38855, 53.275452], [-6.405029, 53.275452], [-6.407089, 53.276138], [-6.408463, 53.276825], [-6.409836, 53.275452], [-6.411209, 53.273392], [-6.413269, 53.272705], [-6.421509, 53.272705], [-6.423569, 53.273392], [-6.424942, 53.274765], [-6.426315, 53.274765], [-6.427689, 53.270645], [-6.429749, 53.269958], [-6.440735, 53.269958], [-6.442795, 53.269272], [-6.444168, 53.267899], [-6.446228, 53.267212], [-6.451721, 53.267212], [-6.453781, 53.267899], [-6.457901, 53.272018], [-6.459961, 53.273392], [-6.462708, 53.274765], [-6.465454, 53.275452], [-6.468201, 53.275452], [-6.470261, 53.274765], [-6.471634, 53.273392], [-6.475754, 53.272018], [-6.477127, 53.270645], [-6.4785, 53.270645], [-6.479874, 53.272018], [-6.481934, 53.272705], [-6.498413, 53.272705], [-6.500473, 53.272018], [-6.501846, 53.270645], [-6.503906, 53.269958], [-6.506653, 53.269958], [-6.508713, 53.269272], [-6.510086, 53.267899], [-6.514206, 53.266525], [-6.515579, 53.265152], [-6.517639, 53.264465], [-6.523132, 53.264465], [-6.525192, 53.265152], [-6.525879, 53.267212], [-6.525879, 53.269958], [-6.525192, 53.272018], [-6.521072, 53.273392], [-6.519699, 53.274765], [-6.515579, 53.276138], [-6.514206, 53.277512], [-6.510086, 53.278885], [-6.508713, 53.280258], [-6.506653, 53.280945], [-6.498413, 53.280945], [-6.496353, 53.281631], [-6.49498, 53.283005], [-6.49292, 53.283691], [-6.487427, 53.283691], [-6.485367, 53.284378], [-6.483994, 53.285751], [-6.481934, 53.286438], [-6.47644, 53.286438], [-6.47438, 53.287125], [-6.473694, 53.289185], [-6.473694, 53.291931], [-6.473007, 53.293991], [-6.470947, 53.294678], [-6.465454, 53.294678], [-6.463394, 53.293991], [-6.462021, 53.292618], [-6.459961, 53.291931], [-6.454468, 53.291931], [-6.452408, 53.292618], [-6.451035, 53.293991], [-6.446915, 53.295364], [-6.445541, 53.299484], [-6.444168, 53.300858], [-6.444168, 53.302231], [-6.446228, 53.302917], [-6.448975, 53.302917], [-6.451035, 53.303604], [-6.452408, 53.307724], [-6.454468, 53.308411], [-6.459961, 53.308411], [-6.462021, 53.307724], [-6.463394, 53.306351], [-6.465454, 53.305664], [-6.473694, 53.305664], [-6.475754, 53.306351], [-6.477127, 53.310471], [-6.479187, 53.311157], [-6.481247, 53.310471], [-6.48262, 53.309097], [-6.48468, 53.308411], [-6.490173, 53.308411], [-6.492233, 53.309097], [-6.49498, 53.311844], [-6.495667, 53.313904], [-6.49498, 53.315964], [-6.49086, 53.317337], [-6.48674, 53.321457], [-6.48468, 53.322144], [-6.473694, 53.322144], [-6.471634, 53.32283], [-6.467514, 53.32695], [-6.463394, 53.328323], [-6.463394, 53.329697], [-6.467514, 53.33107], [-6.468887, 53.332443], [-6.470947, 53.33313], [-6.47644, 53.33313], [-6.4785, 53.333817], [-6.479874, 53.33519], [-6.483994, 53.336563], [-6.485367, 53.337936], [-6.48674, 53.337936], [-6.49086, 53.333817], [-6.49498, 53.332443], [-6.495667, 53.330383], [-6.495667, 53.327637], [-6.496353, 53.325577], [-6.4991, 53.32283], [-6.50116, 53.322144], [-6.514893, 53.322144], [-6.516953, 53.321457], [-6.518326, 53.320084], [-6.520386, 53.319397], [-6.523132, 53.319397], [-6.525192, 53.320084], [-6.527939, 53.32283], [-6.528625, 53.32489], [-6.527939, 53.32695], [-6.523819, 53.33107], [-6.523132, 53.33313], [-6.523819, 53.33519], [-6.525879, 53.335876], [-6.527939, 53.33519], [-6.529312, 53.333817], [-6.531372, 53.33313], [-6.542358, 53.33313], [-6.544418, 53.333817], [-6.545105, 53.335876], [-6.545105, 53.338623], [-6.545792, 53.340683], [-6.548538, 53.34343], [-6.550598, 53.344116], [-6.553345, 53.344116], [-6.555405, 53.344803], [-6.556778, 53.348923], [-6.560898, 53.353043], [-6.562271, 53.357162], [-6.564331, 53.357849], [-6.569824, 53.357849], [-6.571884, 53.358536], [-6.573257, 53.359909], [-6.575317, 53.360596], [-6.583557, 53.360596], [-6.585617, 53.359909], [-6.58699, 53.355789], [-6.59111, 53.351669], [-6.592484, 53.347549], [-6.59523, 53.344803], [-6.59729, 53.344116], [-6.600037, 53.344116], [-6.602097, 53.344803], [-6.604843, 53.347549], [-6.60553, 53.349609], [-6.60553, 53.352356], [-6.604843, 53.354416], [-6.600723, 53.358536], [-6.600037, 53.360596], [-6.600723, 53.362656], [-6.60347, 53.365402], [-6.60553, 53.366089], [-6.61377, 53.366089], [-6.615829, 53.366776], [-6.617203, 53.368149], [-6.619263, 53.368835], [-6.624756, 53.368835], [-6.626816, 53.369522], [-6.628189, 53.370895], [-6.630249, 53.371582], [-6.635742, 53.371582], [-6.637802, 53.372269], [-6.639175, 53.373642], [-6.641235, 53.374329], [-6.643982, 53.374329], [-6.646042, 53.375015], [-6.646729, 53.377075], [-6.646729, 53.379822], [-6.646385, 53.381882], [-6.645355, 53.382568], [-6.643639, 53.382568]]], "type": "Polygon"}, "properties": {"range": {"type": "time", "value": 1500}}, "type": "Feature"}], "type": "FeatureCollection"}, "type": "GeoJSON"}
To specify polygons without changing the data in your question, you need to specify geometry values in dictionary form.
import folium
latitude = 53.372
longitude = -6.49
# Create the map
m = folium.Map(location=[latitude, longitude], zoom_start=10)
# Add a marker to the map
folium.Marker(
[latitude, longitude]
).add_to(m)
# Add the layer
folium.GeoJson(data=value['data']['features'][0]['geometry'], name="geojson").add_to(m)
folium.LayerControl().add_to(m)
m

Reformatting a list of dates from older to new [duplicate]

This question already has answers here:
How to sort a list of objects based on an attribute of the objects in descending order?
(9 answers)
Closed 2 years ago.
I am trying to create a stock graph but im having some issues like, the y axis shows the numbers instead of the dates and the main issue is i want to change the format of strings in a list. They are dates but have been converted into strings.
Here is the data;
{"rates":{"2020-05-04":{"TRY":7.0308901481,"USD":1.0},"2020-03-25":{"TRY":6.4350235522,"USD":1.0},"2020-04-23":{"TRY":6.9428147048,"USD":1.0},"2020-03-31":{"TRY":6.5774917853,"USD":1.0},"2020-03-30":{"TRY":6.5683342396,"USD":1.0},"2020-04-22":{"TRY":6.9943866753,"USD":1.0},"2020-04-28":{"TRY":6.9977935092,"USD":1.0},"2020-03-27":{"TRY":6.4621481279,"USD":1.0},"2020-04-07":{"TRY":6.7581074874,"USD":1.0},"2020-04-09":{"TRY":6.7390264102,"USD":1.0},"2020-05-05":{"TRY":7.0889975099,"USD":1.0},"2020-04-01":{"TRY":6.6683430871,"USD":1.0},"2020-05-06":{"TRY":7.1414823725,"USD":1.0},"2020-05-11":{"TRY":7.0764966741,"USD":1.0},"2020-04-16":{"TRY":6.9347905952,"USD":1.0},"2020-04-14":{"TRY":6.7930311046,"USD":1.0},"2020-04-15":{"TRY":6.8873704485,"USD":1.0},"2020-03-23":{"TRY":6.5859222851,"USD":1.0},"2020-04-02":{"TRY":6.6628461397,"USD":1.0},"2020-04-17":{"TRY":6.9043278085,"USD":1.0},"2020-03-26":{"TRY":6.4117111374,"USD":1.0},"2020-03-24":{"TRY":6.4659227151,"USD":1.0},"2020-05-07":{"TRY":7.2143188352,"USD":1.0},"2020-04-21":{"TRY":6.9814524315,"USD":1.0},"2020-04-24":{"TRY":6.9782407407,"USD":1.0},"2020-04-03":{"TRY":6.7033843301,"USD":1.0},"2020-04-27":{"TRY":6.9825838555,"USD":1.0},"2020-04-06":{"TRY":6.7774997683,"USD":1.0},"2020-05-08":{"TRY":7.1245965139,"USD":1.0},"2020-04-20":{"TRY":6.926335175,"USD":1.0},"2020-04-30":{"TRY":6.9859323281,"USD":1.0},"2020-04-29":{"TRY":6.988286294,"USD":1.0},"2020-04-08":{"TRY":6.7885199154,"USD":1.0}},"start_at":"2020-03-23","base":"USD","end_at":"2020-05-12"}
I tried something like this,and many more things but it didn't work;
gunler = []
[gunler.append(key) for key in veri["rates"].keys()]
sorted_gunler = (datetime.datetime.strptime(i, "%Y-%M-%d") for i in gunler)
print(sorted_gunler)
The output was:
<generator object main.<locals>.<genexpr> at 0x7fcd0f0a8f68>
Tried this also:
new_list = [datetime.datetime.strptime(str(i), '%Y-%m-%d').strftime('%m-%d-%Y') for i in gunler]
Output:
['2020-05-04', '2020-03-25', '2020-04-23', '2020-03-31', '2020-03-30', '2020-04-22', '2020-04-28', '2020-03-27', '2020-04-07', '2020-04-09', '2020-05-05', '2020-04-01', '2020-05-06', '2020-05-11', '2020-04-16', '2020-04-14', '2020-04-15', '2020-03-23', '2020-04-02', '2020-04-17', '2020-03-26', '2020-03-24', '2020-05-07', '2020-04-21', '2020-04-24', '2020-04-03', '2020-04-27', '2020-04-06', '2020-05-08', '2020-04-20', '2020-04-30', '2020-04-29', '2020-04-08']
Then i came up with;
veri = r.json()
gunler = []
[gunler.append(key) for key in veri["rates"].keys()]
sorted(gunler, key=lambda x: datetime.datetime.strptime(x,'%Y-%M-%d'))
print(gunler)
It gave me the same output:
['2020-05-04', '2020-03-25', '2020-04-23', '2020-03-31', '2020-03-30', '2020-04-22', '2020-04-28', '2020-03-27', '2020-04-07', '2020-04-09', '2020-05-05', '2020-04-01', '2020-05-06', '2020-05-11', '2020-04-16', '2020-04-14', '2020-04-15', '2020-03-23', '2020-04-02', '2020-04-17', '2020-03-26', '2020-03-24', '2020-05-07', '2020-04-21', '2020-04-24', '2020-04-03', '2020-04-27', '2020-04-06', '2020-05-08', '2020-04-20', '2020-04-30', '2020-04-29', '2020-04-08']
But i want something like;
['2020-05-04','2020-05-05','2020-05-06'....]
The code works fine, but the result is not correct;
def main(): #the main section
anaBirim = input('\n' + 'Ana para birimini(kod cinsinden) giriniz: ').upper() #firstVal
ikincilBirim = input('İkincil para birimini(kod cinsinden) giriniz: ').upper() #secondVal
if anaBirim in para_birimleri and ikincilBirim in para_birimleri:
gun = int(input("Geriye dönük kaç günlük verinin hesaplanmasını istiyorsunuz: "))
today = datetime.date.today()
geriye_donuk = today - datetime.timedelta(days=gun)
url = ''.join(['https://api.exchangeratesapi.io/history?start_at={}&end_at={}&base={}&symbols={},{}'.format(geriye_donuk,today,anaBirim,anaBirim,ikincilBirim)])
ans = input("Ücüncü bir para birimi karşılaştırmak ister misiniz? E/H \n Cevap: ").upper()
r = requests.get(url)
veri = r.json()
prices = []
[prices.append(value) for value in veri["rates"].values()]
price_one = []
price_two = []
for price in prices:
p_one = price["{}".format(anaBirim)]
price_one.append(p_one)
p_two = price["{}".format(ikincilBirim)]
price_two.append(p_two)
if ans == "H":
plt.figure()
# ana birimin karşısındaki değeri
plt.plot(price_two,color="red")
plt.xlabel("{}\'nin {} günlük süreçteki değişimi".format(ikincilBirim,gun))
plt.ylabel("Değer")
plt.title('{} {}\'nin {} olarak karşılığı '.format(int(price_one[0]),anaBirim,ikincilBirim))
plt.show()
Any help would be greatly appreciated.
I think the answer might be much simpler than that. Since your dates are formatted as "year-month-day" and are in string format, you can simply pass the list to a sort function and it'll do the job, no need to parse as a datetime object.
Use this if you want to change it inplace:
gunler.sort()
Use this if you want to keep the current list without changing it:
new_list = sorted(gunler)

create a dict with first name as key, full name associated with the key as value

I have a list:
name_list = ["David Joyner", "David Zuber", "Brenton Joyner",
"Brenton Zuber", "Nicol Barthel", "Shelba Barthel",
"Shelba Crowley", "Shelba Fernald", "Shelba Odle",
"Shelba Fry", "Maren Fry"]
I want to write a function to return a dictionary which has first name as key, all full names associated with the first name as value:
{'Shelba': ['Shelba Barthel', 'Shelba Crowley', 'Shelba Fernald',
'Shelba Odle', 'Shelba Fry'], 'David': ['David Joyner', 'David Zuber'],
'Brenton': ['Brenton Joyner', 'Brenton Zuber'], 'Maren': ['Maren Fry'],
'Nicol': ['Nicol Barthel']}
thanks.
Smart way (1 pass through your list):
from collections import defaultdict
name_list = ["David Joyner", "David Zuber", "Brenton Joyner",
"Brenton Zuber", "Nicol Barthel", "Shelba Barthel",
"Shelba Crowley", "Shelba Fernald", "Shelba Odle",
"Shelba Fry", "Maren Fry"]
rv = defaultdict(list)
for elem in name_list:
rv[elem.split()[0]].append(elem)
print(dict(rv))
Output:
{'David': ['David Joyner', 'David Zuber'],
'Brenton':['Brenton Joyner', 'Brenton Zuber'],
'Nicol': ['Nicol Barthel'],
'Shelba': ['Shelba Barthel','Shelba Crowley','Shelba Fernald','Shelba Odle','Shelba Fry'],
'Maren': ['Maren Fry']}
Slow way (might look nice, but is inefficient):
d = {key:[n for n in name_list if n.startswith(key)]
for key in set( p.split()[0] for p in name_list)}
This is computationally far worse then the defaultdict version because it traverses the list multiple times:
once to create set( p.split()[0] for p in name_list)
and for every name we just gathered it traverses the full list again to create the dict-value [n for n in name_list if n.startswith(key)]
If you need to sort afterwards, simply use the list.sort() on your dicts values:
# sorting the data afterwards
for k in rv:
rv[k].sort(key = lambda x:x.split()[1]) # to sort by last names
Output:
# only difference when sorted: see key `Shelba`
{'David': ['David Joyner', 'David Zuber'],
'Brenton':['Brenton Joyner', 'Brenton Zuber'],
'Nicol': ['Nicol Barthel'],
'Shelba': ['Shelba Barthel','Shelba Crowley','Shelba Fernald','Shelba Fry','Shelba Odle'],
'Maren': ['Maren Fry']}
As Patrick Artner suggested in the comments, use defaultdict. How about this:
from collections import defaultdict
name_list = ["David Joyner", "David Zuber", "Brenton Joyner",
"Brenton Zuber", "Nicol Barthel", "Shelba Barthel",
"Shelba Crowley", "Shelba Fernald", "Shelba Odle",
"Shelba Fry", "Maren Fry"]
name_dict = defaultdict(list)
for first_name in set([name.split()[0] for name in name_list]):
name_dict[first_name] = [name for name in name_list if name.split()[0] == first_name]
print(name_dict)
#defaultdict(<class 'list'>, {'Maren': ['Maren Fry'], 'David': ['David Joyner', 'David Zuber'], 'Nicol': ['Nicol Barthel'], 'Shelba': ['Shelba Barthel', 'Shelba Crowley', 'Shelba Fernald', 'Shelba Odle', 'Shelba Fry'], 'Brenton': ['Brenton Joyner', 'Brenton Zuber']})
Try this:
def build_dict(name_list)
result_dict = {}
for name in name_list:
names = name.split(" ")
if names[0] in result_dict:
result_dict[names[0]].append(names[1])
else:
result_dict[names[0]] = [names[1]]
return result_dict
The idea is to iterate of the name list, split each name into first name and last name, see if the first name is in the dictionary. if it is, look it up and append the last name to the list of last names. if it is not, assign it a list whose only member is the last name
def name_lists(name_list):
d = {}
for name in name_list:
first_name = name.split()[0]
if first_name in d:
d[first_name].append(name)
d[first_name].sort()
else:
d[first_name]=[name]
return d
def name_counts(name_list):
result_dict = {}
for name in name_list:
names = name.split(" ")
if names[0] in result_dict:
result_dict[names[0]] += 1
else:
result_dict[names[0]] = 1
return result_dict
def name_lists(n_list):
result_dict = {}
n_list.sort()
for name in n_list:
names = name.split(" ")
if names[0] in result_dict:
result_dict[names[0]].append(name)
else:
result_dict[names[0]] = [name]
return result_dict

how to assign each element in a multiple list data set to a variable?

In the below list I'm trying to insert each name and phone number in a db. So I tried to iterate and assign it to a variable and use it in insert statement.
contactlist = [
['Siemens, Harper', '323-4149'],
['Smith, Patti', '239-1212'],
['Jackson, Janet', '313-1352'],
['Manfredi, Ralph','872-2221'],
['Thompson, Bobby', '365-2622'],
['James, Lebron', '457-6223'],
['Ziegler, Zig', '667-1101'],
['Robbins, Tony', '329-2310']
]
This is what I have been trying:
a = []
for data in contactlist:
#print (data)
print (data[0])
for d1 in data:
#print (d1)
a.append(d1)
print (a)
you can use reduce function from functools
from functools import reduce
reduce(lambda m,n: m+n,contanctlist)
in your code
>>> contactlist = [
... ['Siemens, Harper', '323-4149'],
... ['Smith, Patti', '239-1212'],
... ['Jackson, Janet', '313-1352'],
... ['Manfredi, Ralph','872-2221'],
... ['Thompson, Bobby', '365-2622'],
... ['James, Lebron', '457-6223'],
... ['Ziegler, Zig', '667-1101'],
... ['Robbins, Tony', '329-2310']
... ]
>>> a = reduce(lambda m,n: m+n,contactlist)
>>> a
['Siemens, Harper', '323-4149', 'Smith, Patti', '239-1212', 'Jackson, Janet', '313-1352', 'Manfredi, Ralph', '872-2221', 'Thompson, Bobby', '365-2622', 'James, Lebron', '457-6223', 'Ziegler, Zig', '667-1101', 'Robbins, Tony', '329-2310']
As per Varun your comment
contactlist = [
['Siemens, Harper', '323-4149'],
['Smith, Patti', '239-1212'],
['Jackson, Janet', '313-1352'],
['Manfredi, Ralph','872-2221'],
['Thompson, Bobby', '365-2622'],
['James, Lebron', '457-6223'],
['Ziegler, Zig', '667-1101'],
['Robbins, Tony', '329-2310']
]
phone_list = []
person = []
for contact in contactlist:
phone_list.append(contact[1])
person.append(contact[0])
print phone_list
print person
As far as I can see you are accessing your numbers wrong. Your contactlist is a list of lists. So you can access each entry like the way you did. If you need the number take the second entry of that data like this:
for data in contactlist:
name = data[0]
number = data[1]
print 'Name: %s, Number %s' %(name, number)
Instead of printing the entries you can do whatever you need to do with your variables to add them into your database.
Looking at this: Inserting multiple rows in a single SQL query?, one way would be to create a string that you insert in your command
contactlist = [
['Siemens, Harper', '323-4149'],
['Smith, Patti', '239-1212'],
['Jackson, Janet', '313-1352'],
['Manfredi, Ralph','872-2221'],
['Thompson, Bobby', '365-2622'],
['James, Lebron', '457-6223'],
['Ziegler, Zig', '667-1101'],
['Robbins, Tony', '329-2310']
]
str([tuple(i) for i in contactlist])[1:-1]
Prints
"('Siemens, Harper', '323-4149'), ('Smith, Patti', '239-1212'), ('Jackson, Janet', '313-1352'), ('Manfredi, Ralph', '872-2221'), ('Thompson, Bobby', '365-2622'), ('James, Lebron', '457-6223'), ('Ziegler, Zig', '667-1101'), ('Robbins, Tony', '329-2310')"
But looking at the Python docs that is not necessary. Consider this
full example: (https://docs.python.org/2/library/sqlite3.html):
import sqlite3
contactlist = [
['Siemens, Harper', '323-4149'],
['Smith, Patti', '239-1212'],
['Jackson, Janet', '313-1352'],
['Manfredi, Ralph','872-2221'],
['Thompson, Bobby', '365-2622'],
['James, Lebron', '457-6223'],
['Ziegler, Zig', '667-1101'],
['Robbins, Tony', '329-2310']
]
conn = sqlite3.connect('example.db')
c = conn.cursor()
# Delete table
c.execute('drop table if exists employees')
# Create table
c.execute('''CREATE TABLE employees
(name, number)''')
# Insert a row of data
c.executemany('INSERT INTO employees VALUES (?,?)', contactlist)
# or
# c.execute("INSERT INTO employees VALUES {}".format(str([tuple(i) for i in contactlist])[1:-1]))
conn.commit() # Commit the changes
conn.close()
The database now contains a table called employees with the following rows:
('Siemens, Harper', '323-4149')
('Smith, Patti', '239-1212')
('Jackson, Janet', '313-1352')
('Manfredi, Ralph', '872-2221')
('Thompson, Bobby', '365-2622')
('James, Lebron', '457-6223')
('Ziegler, Zig', '667-1101')
('Robbins, Tony', '329-2310')
Just a suggestion but in your comment of Kallz's post you said "The same output Im getting in my code posted above also but my problem i want to extract individual names and phone numbers".
For this you might want to use a dictionary.
Contacts={}
Contacts['Barry']="184788174"
Contacts['Stewart']="1515174"
Contacts['Sarah']="1252358174"
print(Contacts['Barry'])
Returns:
184788174
Or to display all:
Contacts={}
Contacts['Barry']="184788174"
Contacts['Stewart']="1515174"
Contacts['Sarah']="1252358174"
for data in Contacts:
print(data, ":")
print(Contacts[data], """
""")
Returns:
Barry :
184788174
Stewart :
1515174
Sarah :
1252358174

Return value from list based on value being between 2 other list elements

I have a project I am working on that requires me to place items in predefined price tiers based on the value being pulled from an excel file. I have everything else worked out in my script except this last piece.
What I want to be able to do is build a list of lists (not stuck on the data structure if there is a better/more efficient option), check to see if the value is between i[0] and i[1] and return i[2].
Example would be:
my_value = 22.99
[[0],[24.99],['0-24.99'],[25,49.99,'25-49.99]......]
Desired output: '0-24.99'
Edit:
Now that I am back to my computer, I've written out the code to try and pull this off.
These functions are used for a calculation and to match the tier.
#define functions
#calculate Eligible Average Selling Price
def asp(x,y):
if float(y)==0:
return 0
else:
return float(x)/float(y)
#Search Tiers Dictionary and return undefined if tier does not exist
def inTier(x,y,z):
for t in Tiers[x]:
if float(t[0]) <= asp(y,z) <= float(t[1]):
return t[2]
else:
return 'Tier Undefined'
Here is the dictionary I am looping through to match the tier.
Tiers= {'Desktop':[[0, 24.99, '0-24.99'],[25, 49.99, '25-49.99'],[50, 74.99, '50-74.99'],[75, 99.99, '75-99.99'],[100, 124.99, '100-124.99'],[125, 149.99, '125-149.99'],[150, 199.99, '150-199.99'],[200, 249.99, '200-249.99'],[250, 299.99, '250-299.99'],[300, 499.99, '300-499.99'],[500, 749.99, '500-749.99'],[750, 999.99, '750-999.99'],[1000, 1999.99, '1000-1999.99'],[2000, 2999.99, '2000-2999.99'],[3000, 9999.99, '3000-9999.99']],'Chair':[[0, 24.99, '0-24.99'],[25, 49.99, '25-49.99'],[50, 74.99, '50-74.99'],[75, 99.99, '75-99.99'],[100, 124.99, '100-124.99'],[125, 149.99, '125-149.99'],[150, 199.99, '150-199.99'],[200, 249.99, '200-249.99'],[250, 299.99, '250-299.99'],[300, 499.99, '300-499.99'],[500, 749.99, '500-749.99'],[750, 999.99, '750-999.99'],[1000, 1999.99, '1000-1999.99'],[2000, 2999.99, '2000-2999.99'],[3000, 9999.99, '3000-9999.99']],'Gear':[[0, 9.99, '0-9.99'],[10, 24.99, '10-24.99'],[25, 49.99, '25-49.99'],[50, 74.99, '50-74.99'],[75, 99.99, '75-99.99'],[100, 124.99, '100-124.99'],[125, 149.99, '125-149.99'],[150, 199.99, '150-199.99'],[200, 249.99, '200-249.99'],[250, 299.99, '250-299.99'],[300, 349.99, '300-349.99'],[350, 399.99, '350-399.99'],[400, 499.99, '400-499.99'],[500, 749.99, '500-749.99'],[750, 999.99, '750-999.99'],[1000, 1999.99, '1000-1999.99'],[2000, 2999.99, '2000-2999.99'],[3000, 9999.99, '3000-9999.99']],'Laptop':[[0, 49.99, '0-49.99'],[50, 99.99, '50-99.99'],[100, 149.99, '100-149.99'],[150, 199.99, '150-199.99'],[200, 249.99, '200-249.99'],[250, 299.99, '250-299.99'],[300, 349.99, '300-349.99'],[350, 399.99, '350-399.99'],[400, 449.99, '400-449.99'],[450, 549.99, '450-549.99'],[550, 649.99, '550-649.99'],[650, 749.99, '650-749.99'],[750, 999.99, '750-999.99'],[1000, 4999.99, '1000-1999.99'],[2000, 6999.99, '2000-6999.99']],'Printer':[[0, 24.99, '0-24.99'],[25, 49.99, '25-49.99'],[50, 74.99, '50-74.99'],[75, 99.99, '75-99.99'],[100, 124.99, '100-124.99'],[125, 149.99, '125-149.99'],[150, 199.99, '150-199.99'],[200, 249.99, '200-249.99'],[250, 299.99, '250-299.99'],[300, 499.99, '300-499.99'],[500, 749.99, '500-749.99'],[750, 999.99, '750-999.99'],[1000, 1999.99, '1000-1999.99'],[2000, 2999.99, '2000-2999.99'],[3000, 9999.99, '3000-9999.99']],'Tablet':[[0, 49.99, '0-49.99'],[50, 99.99, '50-99.99'],[100, 149.99, '100-149.99'],[150, 199.99, '150-199.99'],[200, 249.99, '200-249.99'],[250, 299.99, '250-299.99'],[300, 349.99, '300-349.99'],[350, 399.99, '350-399.99'],[400, 449.99, '400-449.99'],[450, 549.99, '450-549.99'],[550, 649.99, '550-649.99'],[650, 749.99, '650-749.99'],[750, 999.99, '750-999.99'],[1000, 1999.99, '1000-1999.99'],[2000, 4999.99, '2000-4999.99']]}
And here is where values are being evaluated from a list row into a list row
row=[row[0],row[1].split(" ")[1],row[2].split(" ")[1],int(re.findall(r'\d+', row[3])[0]),row[4],row[5],row[6],asp(row[5],row[6]),inTier(row[0],row[5],row[6])]
and an example row that is returning 'Tier Undefined':
['Gear', 'REGION 27 SOUTHEAST', 'DISTRICT 7 E ATL', 'LOGANVILLE GA (6852)', 'WNDA3100 RANGEMAX', '32.99', '1']
In general it seems like the only tiers that gets a positive match are the first in the list of lists Dictionary value.
I assume your list has a typo, and you meant to write:
tiers = [[0,24.99,'0-24.99'],[25,49.99,'25-49.99]......]
Then you just loop through them:
for tier in tiers:
if tier[0] <= my_value <= tier[1]:
selected_tier = tier[2]
break

Categories