两列数据结构 - Python

时间:2014-07-25 12:04:38

标签: python sql list data-structures pyodbc

如果我有一个颜色列表,如何在循环中创建数据结构

[(u'blue', ), (u'green', ), (u'black', )]

并且需要一个数据结构(可能是一个2列列表),如下所示;

(('blue', 'blue'),
('green', 'green'),
('black', 'black'))

另外,作为一个额外的,为什么(以及什么类型的变量)是我的颜色列表,由以前缀为u的项目组成,并且被包围在' &#39 ;?当我尝试执行字符串操作时,它似乎并不认识到它是字符串的一部分。数据(实际上不是颜色!)来自SQL db中列的pyodbc查询。

例如,如果我正在修改colours_list中的第一行(语法不正确)

row[2:]
print row

(u'ue', ) # output

谢谢!

1 个答案:

答案 0 :(得分:3)

使用生成器表达式和元组解包:

>>> colors = [(u'blue', ), (u'green', ), (u'black', )]

# If you want a tuple of 2-items tuples, use `tuple()` and generator expression
>>> tuple((color, color) for color, in colors)
((u'blue', u'blue'), (u'green', u'green'), (u'black', u'black'))

# If you want a list of 2-items tuples, use list comprehension
>>> [(color, color) for color, in colors]
[(u'blue', u'blue'), (u'green', u'green'), (u'black', u'black')]

u'...'是一个unicode字符串文字。 (见Unicode Strings

使用str functionunicode.encode method,您可以将unicode对象转换为str对象:

>>> tuple((str(color), str(color)) for color, in colors)
(('blue', 'blue'), ('green', 'green'), ('black', 'black'))
>>> tuple((color.encode(), color.encode()) for color, in colors)
(('blue', 'blue'), ('green', 'green'), ('black', 'black'))