[英]iterating through a list consisting of nested tuples/dictionaries
我有嵌套元组/字典的以下列表。
list1 = [
('key1', {'count': 10, 'value1': Counter({'set1': 5, 'set2': 4, 'set3': 1})}),
('key2', {'count': 8, 'value1': Counter({'set1': 6, 'set2': 2})}),
('key3', {'count': 7, 'value1': Counter({'set1': 5, 'set2': 2, 'set3': 1})})
]
这是我到目前为止所拥有的;
for key, value in list1:
print key, value['count'], '|||', value['value1'].keys(), value['value1'].values()
Result:
key1 10 ||| ['set1', 'set2', 'set3'] [5, 4, 1]
key2 8 ||| ['set1', 'set2'] [6, 2]
key3 7 ||| ['set1', 'set2', 'set3'] [5, 2, 1]
我不知道如何使它遍历每个集合并像这样打印其计数。
key1 10 ||| set1 5, set 4, set3 1
key2 8 ||| set1 6, set2 2
key3 7 ||| set1 5, set2 2, set3 1
对于Counter值,我似乎只能获得键或仅获得值,而不能一次遍历它们,如上所示。
Counter
对象只是具有额外行为的字典,因此您也可以使用dict.items()
。 但是,我将在这里使用Counter
对象特有的另一种方法。
循环遍历Counter.most_common()
方法,并将生成的元组格式化为字符串:
for key, value in list1:
print key, value['count'], '|||', ', '.join(['%s %d' % kv for kv in value['value1'].most_common()])
您可能希望将字符串格式与str.format()
来创建列格式:
for key, value in list1:
print '{} {:<2d} ||| {}'.format(
key, value['count'],
', '.join(['%s %d' % kv for kv in value['value1'].most_common()]))
Counter.most_common()
生成键值对,从最高计数到最低计数。
后者的演示:
>>> for key, value in list1:
... print '{} {:<2d} ||| {}'.format(
... key, value['count'],
... ', '.join(['%s %d' % kv for kv in value['value1'].most_common()]))
...
key1 10 ||| set1 5, set2 4, set3 1
key2 8 ||| set1 6, set2 2
key3 7 ||| set1 5, set2 2, set3 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.