将引脚列表映射到生成的组合列表
Mapping pin list to a generated combination list
在 的基础上,我从给定的列表中生成了一系列元素,总计为用户的输入值。从生成的数字组合中,我想更改 raspberry pi on/off 上的引脚状态。即当 maximum = 35
生成 [1, 4, 10, 20]
然后选择 1:2, 4:17, 10:27, 20:22
然后转动 pins 2, 17, 27 & 22 on
或者如果 maximum = 30
输出应该给我 [10, 20]
& 10:27, 20:22
和转 pins 27 & 22 on
使用 dict
我有
import itertools
maximum = 35
data = [1, 2, 3, 4, 10, 20]
pinList = [2, 3, 4, 17, 27, 22]
dictionary = dict(zip(data, pinList))
def selection(data, maximum):
for count in range(1,len(data)+1):
for combination in itertools.combinations(data, count):
if maximum == sum(combination):
return list(combination)
i = list(selection(data, maximum))
print (i)
k = dict((key, value) for key, value in dictionary.iteritems() if key == i)
print k
aux = range(len(k))
for r in aux:
GPIO.setup(r, GPIO.OUT)
GPIO.output(r, GPIO.HIGH)
我只得到
[1, 4, 10, 20]
{}
将==
改为in
:
k = dict((key, value) for key, value in dictionary.iteritems() if key in i)
或更有效:
k = dict((key, dictionary[key]) for key in i)
在 maximum = 35
生成 [1, 4, 10, 20]
然后选择 1:2, 4:17, 10:27, 20:22
然后转动 pins 2, 17, 27 & 22 on
或者如果 maximum = 30
输出应该给我 [10, 20]
& 10:27, 20:22
和转 pins 27 & 22 on
使用 dict
我有
import itertools
maximum = 35
data = [1, 2, 3, 4, 10, 20]
pinList = [2, 3, 4, 17, 27, 22]
dictionary = dict(zip(data, pinList))
def selection(data, maximum):
for count in range(1,len(data)+1):
for combination in itertools.combinations(data, count):
if maximum == sum(combination):
return list(combination)
i = list(selection(data, maximum))
print (i)
k = dict((key, value) for key, value in dictionary.iteritems() if key == i)
print k
aux = range(len(k))
for r in aux:
GPIO.setup(r, GPIO.OUT)
GPIO.output(r, GPIO.HIGH)
我只得到
[1, 4, 10, 20]
{}
将==
改为in
:
k = dict((key, value) for key, value in dictionary.iteritems() if key in i)
或更有效:
k = dict((key, dictionary[key]) for key in i)