Python将多个值从一个列表关联到另一个列表

Python将多个值从一个列表关联到另一个列表,python,sql,list,Python,Sql,List,我心里有一个很简单的想法,但不知道该怎么做。我有两个不同长度的列表,一个是50,另一个是200 所以 我想做的是打印出一些行,其中x中的一个值对应于y的多个值,而不管数字是否重复 I.e. suppose x = [1,2,3,4] y = [7,8,9,10,11,12,13,14,15,16,17] I want to print out: 1: 7 1: 8 1: 9 1: 10 2: 11 2: 12 2: 13 3: 14 3: 15 3: 16 4: 17 y值的随机化实际上并不

我心里有一个很简单的想法,但不知道该怎么做。我有两个不同长度的列表,一个是50,另一个是200

所以

我想做的是打印出一些行,其中x中的一个值对应于y的多个值,而不管数字是否重复

I.e. suppose x = [1,2,3,4]
y = [7,8,9,10,11,12,13,14,15,16,17]

I want to print out:
1: 7
1: 8
1: 9
1: 10
2: 11
2: 12
2: 13
3: 14
3: 15
3: 16
4: 17
y值的随机化实际上并不重要。 对于x的每个值,打印出多少个多值并不重要。我基本上是在尝试编写一个sql脚本,将多个元素从一个表插入到另一个表中,并使用python编写脚本

我知道这可以通过简单地迭代最小的列表并拥有多个f.write语句来实现,同时增加一些变量,使多个y值与单个x值相关联。但这并没有涵盖y的所有值,看起来有点傻。有没有更好的方法来做这件事


编辑:对于我是如何提出键与值的关联的问题,1个键与8个上限关联的值有多少并不重要。只能有1个值或最多8个值的倍数。同样,键之间可以重复值,即在我的示例中没有,但键4也可以说有值7/8,请尝试以下Python解决方案:

>>> x = [1,2,3,4]
>>> y = [7,8,9,10,11,12,13,14,15,16,17]
>>> lnx, lny = len(x), len(y)
>>> groupatleast = (lny + lnx - 1) // lnx
>>> x2y = {}
>>> for i in range(lnx):
    x2y[x[i]] = y[i*groupatleast: (i+1)*groupatleast]


>>> x2y[x[i]] += y[(i+1)*groupatleast:]
>>> for x1,ylist in sorted(x2y.items()):
    for y1 in ylist:
        print ("%i: %i" % (x1, y1))


1: 7
1: 8
1: 9
2: 10
2: 11
2: 12
3: 13
3: 14
3: 15
4: 16
4: 17
>>> 
>>> # Help:
>>> lnx, lny
(4, 11)
>>> groupatleast
3
>>> x2y
{1: [7, 8, 9], 2: [10, 11, 12], 3: [13, 14, 15], 4: [16, 17]}
>>> ylist
[16, 17]
>>> 

我找不到结果字典的键和它们各自的值之间的任何模式。你能解释一下这两者应该如何结合吗?@Blender确切地说,为什么有四个值与1关联,一个值与4关联?这有什么逻辑吗?在这些问题上添加了答案,使问题变得简单多了。多谢。应该能够创建机器翻译查询容易得多!
>>> x = [1,2,3,4]
>>> y = [7,8,9,10,11,12,13,14,15,16,17]
>>> lnx, lny = len(x), len(y)
>>> groupatleast = (lny + lnx - 1) // lnx
>>> x2y = {}
>>> for i in range(lnx):
    x2y[x[i]] = y[i*groupatleast: (i+1)*groupatleast]


>>> x2y[x[i]] += y[(i+1)*groupatleast:]
>>> for x1,ylist in sorted(x2y.items()):
    for y1 in ylist:
        print ("%i: %i" % (x1, y1))


1: 7
1: 8
1: 9
2: 10
2: 11
2: 12
3: 13
3: 14
3: 15
4: 16
4: 17
>>> 
>>> # Help:
>>> lnx, lny
(4, 11)
>>> groupatleast
3
>>> x2y
{1: [7, 8, 9], 2: [10, 11, 12], 3: [13, 14, 15], 4: [16, 17]}
>>> ylist
[16, 17]
>>> 
>>> xs = [1,2,3,4]
>>> ys = [7,8,9,10,11,12,13,14,15,16,17]

>>> for (i, y) in enumerate(ys):
>>>    print "%d: %d" % (xs[len(xs) * i / len(ys)], y)
1: 7
1: 8
1: 9
2: 10
2: 11
2: 12
3: 13
3: 14
3: 15
4: 16
4: 17

>>> import itertools
>>> for x, y in itertools.izip(itertools.cycle(xs), ys):
...     print "%d: %d" % (x, y)
...
1: 7
2: 8
3: 9
4: 10
1: 11
2: 12
3: 13
4: 14
1: 15
2: 16
3: 17