#python #random #dictionary
#python #Случайный #словарь
Вопрос:
Я знаю, вы могли бы сказать, что словари расположены не в любом порядке естественным образом, но у меня есть большой словарь, ключами которого являются числа и некоторая строка в качестве их значений. Ключи начинаются с 0. например: x={0:'a',1:'b',2:'c'}
. Я использую .iteritems()
для просмотра моего словаря в цикле. однако это делается в точном порядке следования ключей 0,1,2
. Я хочу, чтобы это было рандомизировано. итак, например, мой цикл выводит это: 1:'b',2:'c',0:'a'
. мне нужна помощь. Спасибо
Комментарии:
1. «Я хочу, чтобы это было рандомизировано». Почему?
2. В моем случае у меня есть большой словарь сетевых целей. Я хочу, чтобы они сканировались в случайном порядке, чтобы уменьшить возможную нагрузку на целевые сетевые объекты, где на одном хосте сканируется несколько портов. Поскольку во входном списке они расположены в порядке IP, затем port, мне нужно где-то рандомизировать это.
Ответ №1:
Используйте random.shuffle
. Кроме того, порядок итераций ключей словаря не гарантируется никакими средствами — вы просто случайно получили (0, 1, 2).
import random
keys = my_dict.keys()
random.shuffle(keys)
for key in keys:
print key, my_dict[key]
Комментарии:
1. Однако, учитывая, как обычно реализованы словари, это не изменится, если вы не добавите записи.
2. На соответствующем примечании.
collections.OrderedDict
это правильный вариант для использования, если вы хотите, чтобы он оставался больше похожим на ассоциативные массивы , например , PHP.