在python中打印和格式化元组
我有这个:在python中打印和格式化元组,python,python-2.7,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 将唯一值提取到一个集合中,然后将
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
将唯一值提取到一个集合中,然后将这些值合并到单个字符串中:
unique = {t[0] for t in record[1]}
print '{}:{}'.format(record[0], ','.join(unique))
演示:
请注意,集合是无序的,这就是为什么此输入得到的是U10,U2
,而不是U2,U10
。看
如果顺序很重要,请将键值对列表转换为,并从结果中获取键:
>>> from collections import OrderedDict
>>> unique = OrderedDict(record[1])
>>> print '{}:{}'.format(record[0], ','.join(unique))
U9:U2,U10
根据什么规则从列表中提取值?唯一值?按什么顺序?我假设您只想打印一次U2,即使它出现两次。请明确说明规则是什么。谢谢。我现在已经编辑好了。谢谢你。另外,如果我要订购(U2,U10),我可以在上面添加什么?@AmanMathur:您可以使用
OrderedDict
;作为替代添加。再次感谢您。但奇怪的是,如果记录=(u'U9',[(u'U10',0.666666),(u'U2',1.0)]我仍然得到U9:U10,U2@AmanMathur:这与输入的顺序不同。请明确说明您想要什么样的订单。您似乎希望使用自然顺序对键进行排序(因此仅使用数字)。使用设置的版本,然后首先使用“谢谢”中的答案对其进行排序。但是,我不能使用第三方库进行排序。
>>> from collections import OrderedDict
>>> unique = OrderedDict(record[1])
>>> print '{}:{}'.format(record[0], ','.join(unique))
U9:U2,U10