Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中打印和格式化元组_Python_Python 2.7 - Fatal编程技术网

在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