在python

时间:2017-03-12 05:36:14

标签: python python-2.7

我有这个:

record = (u'U9', [(u'U2', 1.0), (u'U10', 0.6666666666666666), (u'U2', 1.0)])

我想将此作为文件的打印输出:

U9:U2,U10

注意:输出中只需要唯一值(尽管出现两次,U2仅打印一次)

我尝试过使用:

for i in record[1]:
   print record[1], ":", record[i[0]]

但是这给了我:

U9:U2
U9:U10
U9:U2

1 个答案:

答案 0 :(得分:2)

将唯一值提取到集合中,然后将它们连接成一个字符串:

unique = {t[0] for t in record[1]}
print '{}:{}'.format(record[0], ','.join(unique))

演示:

>>> record = (u'U9', [(u'U2', 1.0), (u'U10', 0.6666666666666666), (u'U2', 1.0)])
>>> unique = {t[0] for t in record[1]}
>>> print '{}:{}'.format(record[0], ','.join(unique))
U9:U10,U2

请注意,集合是无序的,这就是为此输入获得U10,U2而不是U2,U10的原因。见Why is the order in dictionaries and sets arbitrary?

如果订单很重要,请将您的键值对列表转换为collections.OrderedDict() object,然后从结果中获取键:

>>> from collections import OrderedDict
>>> unique = OrderedDict(record[1])
>>> print '{}:{}'.format(record[0], ','.join(unique))
U9:U2,U10