簡體   English   中英

遍歷由嵌套元組/字典組成的列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM