我有这个:
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
答案 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