6

我有一个包含从数据库查询生成的元组的列表,它看起来像这样。

[(item1, value1), (item2, value2), (item3, value3),...]

元组将是混合长度,当我打印输出时,它看起来像这样。

item1=value1, item2=value2, item3=value3,...

我已经寻找了一段时间试图找到解决方案,但.join()我找到的解决方案都没有适用于这种情况。

4

6 回答 6

12

你追求的是:

>>> a = [('val', 1), ('val2', 2), ('val3', 3)]
>>> ', '.join('{}={}'.format(*el) for el in a)
'val=1, val2=2, val3=3'

这也不关心元组元素是什么类型......您将str自动获得它们的表示。

于 2013-08-20T19:59:36.680 回答
3

itertools你也可以使用

from itertools import starmap
', '.join(starmap('{}={}'.format, a))
于 2013-08-20T20:06:32.517 回答
3

如果每个元组只是一(item, value)对,那么这应该有效:

l = [(item1, value1), (item2, value2), (item3, value3), ...]
', '.join('='.join(t) for t in l)
'item1=value1, item2=value2, item3=value3, ...'
于 2013-08-20T20:00:13.397 回答
1

尝试这个:

lst = [('item1', 'value1'), ('item2', 'value2'), ('item3', 'value3')]
print ', '.join(str(x) + '=' + str(y) for x, y in lst)

我明确地将项目和值转换为字符串,如果一个(或两个)已经是字符串,您可以删除相应的str()转换:

print ', '.join(x + '=' + y for x, y in lst)
于 2013-08-20T20:00:42.780 回答
1

一种可能的解决方案是,绝对是最短的代码

>>> a = [('val', 1), ('val2', 2), ('val3', 3)]
>>>', '.join('%s=%s' % v for v in a)
'val=1, val2=2, val3=3'

也适用于 python 2.7

于 2017-08-16T11:40:12.570 回答
0

如果你想要这样的东西,我会用字典。

dict = {1:2,3:4}
print dict

然后,您可以像这样循环遍历它:

dict = {1:2,3:3}
print dict

for i in dict:
    print i, "=", dict[i]

希望能帮助到你!

于 2013-08-20T20:03:06.487 回答