迭代一个由嵌套元组/字典组成的列表

时间:2016-06-12 14:24:42

标签: python list dictionary tuples

我有以下列表,其中嵌套了元组/ dicts。

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值,我似乎只能获取键或仅获取值,但不能一次一个地迭代它们,如上所示。

1 个答案:

答案 0 :(得分:2)

img个对象只是具有额外行为的字典,因此您也可以使用$('select.form-control').change(function() { var file = $('#shape').val() + '-' + $('#waist').val() + '.jpg'; $('#imgToChange').prop('src', filename); }); 。但是,我使用了Counter对象独有的不同方法。

循环遍历Counter.most_common() method并将元组格式化为字符串:

dict.items()

您可能希望使用Counter的字符串格式来创建列格式:

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()]))