【发布时间】:2016-01-10 09:31:47
【问题描述】:
我有一个 python 字典,其中的值是整数列表:
key1 -> [1, 2, 3]
key2 -> [1, 2, 3, ... 17]
key3 -> [1, 2, 3, 4, 5]
我想选择一个随机元组(key, val),其中 val 是值列表中的一个随机值(例如:key2, 8)。随机选择在所有值上必须是统一的,例如,这种方法是不统一的:
random_key = random.choice(d.keys())
random_val = random.choice(d[random_key])
因为列表的长度不同。 我知道列表串联的长度 n,所以我目前的方法如下:
idx = np.random.randint(n)
c = 0
found = False
for k in D:
for v in D[k]:
if c == idx:
found = True
do_something_with_val(k, v);
break
c += 1
if found:
break
我的问题是:有没有更好/更快的方法来做到这一点?
【问题讨论】:
-
您是否控制这些列表中的值设置?
-
你知道列表的最大长度是多少吗?还是你无法控制?
-
列表的最大长度是已知的并且不会改变。但是,列表中元素的分布确实发生了变化。例如:元素 5 可以从“key2”中删除,新元素 1 可以添加到“key3”,但列表的最大长度始终相同。
标签: python dictionary random