Обращение к словарю по индексу со списка
Есть следующий код
import random
number = list('1334')
random_width = random.randint(0, 400)
segment_width = {
'0': {
'xmin': 0,
'xmax': random_width / 4
},
'1': {
'xmin': random_width / 4,
'xmax': random_width / 2
},
'2': {
'xmin': random_width / 2,
'xmax': 3 * (random_width / 4)
},
'3': {
'xmin': 3 * (random_width / 4),
'xmax': random_width
}
}
for sym in number:
print(segment_width[str(number.index(sym))])
Он выводит следующее:
{'xmin': 0, 'xmax': 45.5}
{'xmin': 45.5, 'xmax': 91.0}
{'xmin': 45.5, 'xmax': 91.0}
{'xmin': 136.5, 'xmax': 182}
Почему по индексу 1 и 2 выводит данные первой 3-ки со списка, а не их отдельные значения? И как это исправить, когда значения списка одинаковые?
Ответы (1 шт):
index()is an inbuilt function in Python, which searches for a given element from the start of the list and returns the lowest index where the element appears.
ну вот ваша тройка встречается впервые по индексу 1, поэтому вы ее и получаете 2 раза по индексу 1
или вы хотели число 1234 записать?
т.е. ваш кол делает следующее:
разбил строку
1334в список['1', '3', '3', '4']для каждого значения определяется его ближайшее к началу позиция в списке
['1', '3', '3', '4']индекс переводится в строку
из словаря по строке-ключу выбирается значение
для ['1', '3', '3', '4'] получаем индексы соответственно 0, 1, 1, 3