【问题标题】:Randomizing a dictionary in python在python中随机化一个字典
【发布时间】:2011-05-24 08:45:53
【问题描述】:

我知道你可能会说字典自然没有任何顺序,但我有一个很大的字典键是数字和一些字符串作为它们的值。键从 0 开始。例如:x={0:'a',1:'b',2:'c'}。我正在使用.iteritems() 循环浏览我的字典。但是,这是按照键 0,1,2 的确切顺序完成的。我希望这是随机的。所以例如我的循环打印这个:1:'b',2:'c',0:'a'。我需要帮助。谢谢

【问题讨论】:

  • “我希望这是随机的。”为什么?
  • 就我而言,我有一个庞大的网络目标字典。我希望以随机顺序扫描它们,以减少在同一主机上扫描多个端口的网络目标上的可能负载。因为在输入列表中它们的顺序是 IP 然后是端口,我需要在某个地方随机化。

标签: python random dictionary


【解决方案1】:

使用random.shuffle。此外,字典的键迭代顺序不能以任何方式保证 - 你只是碰巧得到 (0, 1, 2)。

import random
keys = my_dict.keys()
random.shuffle(keys)
for key in keys:
    print key, my_dict[key]

【讨论】:

  • 鉴于字典的实现方式通常不会改变,除非您添加条目。
  • 在相关说明上。 collections.OrderedDict 是正确的,如果您希望它保持更像 e.g. PHP 关联数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 2016-11-02
  • 2012-09-10
  • 2015-05-25
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多