2017-05-14 8 views
1

私はキーの数を5と指定して(キーが0,1,2,3、および4などとなるように)、値が0であるキーごとに値の数をランダムにしたかったとします。 1,2,3、または4であり、各キーには反復値はありません。私はランダム完全グラフを作成しようとしています。出力の例:指定したキー数とキーごとにランダムな値を持つ辞書を生成するにはどうすればよいですか?

dict = { "0": ["3"], 
     "1": ["4"], 
     "2": ["3","4"], 
     "3": ["0","2"], 
     "4": ["1","2"] 
     } 
+1

いくつかのコードを書いてみてください。それはそれを行う必要があります。 –

+0

繰り返し値がないために 'random.sample'を探します。 – mtkilic

答えて

0

あなたは0から4まで、あなたの整数である二つのリスト、keys、から辞書を作成してみてください、とvaluesことができ、いずれかのすべての組み合わせを(含むリストからランダムピック(random.choice(seq))ですあなたのnumbersの長さ)、そしてそれはちょうどforのイニシャルがそこにあるものです(check this answer)。最終的な辞書の値がタプルであることに注意してください。ここからコードを変更する必要はありません。また、すでにitertoolsをインポートしているので、辞書の構成はdict(itertools.izip(keys,values))を使用してコード化することができます。これは大きなリストのシナリオではより経済的なアプローチです。

import random 
import itertools 

n = 5 
keys = range(n) 
numbers = [0,1,2,3,4] #or simply numbers = range(n), if that's what you need 
values = [] 
possibleValues = [] 

for L in range(0, len(numbers)+1): 
    for subset in itertools.combinations(numbers, L): 
    possibleValues.append(subset) 

for i in range(len(numbers)): 
    values.append(random.choice(possibleValues)) 

dictionary = dict(zip(keys, values)) 
2
import random 

number_of_nodes = 5 
graph = dict() 

for i in range(number_of_nodes): 
    graph[i] = random.sample(range(0, number_of_nodes), random.randint(0, number_of_nodes)) 
+0

これは、私の答えよりもコード化するのに効果的な方法です!共有ありがとう –

+0

ありがとう、それはまっすぐです –

関連する問題