具有函数作为参数的python dict.fromkeys
问题描述:
我需要将来自test_input
和classes
的数据分组,即如果来自test_input
的2个值相同,则它们应该具有相同的类。具有函数作为参数的python dict.fromkeys
我试图创建一个字典,但不能获得一流的管理如何可以做到:
@pytest.mark.parametrize("test_input,expected", [
([23,33,33,53,63,73,83,93,103], 'dictwithclass'),
])
def test_colorize(test_input, expected):
classes = ("colore1","colore2","colore3","colore4","colore5","colore6","colore7","colore8","colore9","colore10")
insiemi=set(test_input)
result = dict.fromkeys(insiemi, classi)
应该输出:
{33: “colore1”,83: “colore2”,53: “colore3”,103: “colore4”,73: “colore5”,23: “colore6”,93: “colore7”,63: “colore8”}
答
dict.fromkeys()
将设置所有钥匙到相同,单值为。你不能用它来设置多个不同的值。
使用zip()
配对您的钥匙和价值观,然后将得到的(key, value)
双序列传送到直接dict()
类型:
classes = ('colore1', 'colore2', 'colore3', 'colore4', 'colore5', 'colore6', 'colore7', 'colore8', 'colore9', 'colore10')
result = dict(zip(set(test_input), classes))
注意,因为set()
对象无序,你不会知道可以肯定的是,这里的关键是什么课程。对于整数值,该顺序在解释器的调用之间是稳定的,但可以是,因为Python版本与Python版本不同。
演示:
>>> classes = ('colore1', 'colore2', 'colore3', 'colore4', 'colore5', 'colore6', 'colore7', 'colore8', 'colore9', 'colore10')
>>> dict(zip(set(test_input), classes))
{33: 'colore1', 103: 'colore2', 73: 'colore3', 83: 'colore4', 53: 'colore5', 23: 'colore6', 93: 'colore7', 63: 'colore8'}
上面假定存在从来没有更多的10个独特的密钥;它可能是更好的生成这里的类名:
result = {key: 'colore{}'.format(i) for i, key in enumerate(set(test_input), 1)}
这使用enumerate()
功能与数集合中的每个元素(从1开始),然后使用该编号,以产生一个类名称。