簡體   English   中英

差異兩個數組的Python方式

[英]Pythonic way of diffing two arrays

我調用兩個API端點並收到以下響應:

applications = [{'id': '1', 'name': 'app1'}, {'id': '2', 'name': 'app2'}]
types = [{'id': '3', 'name': 'app1'}, {'id': '4', 'name': 'app1'}]

我正在尋找以下輸出:

app1 has 2 types.
app2 has 0 types.

我可以使用嵌套的for循環來實現這一目標,但是實現這一目標的最Python方式是什么?

types = [app['name'] for app in types]
apps = {app['name']:types.count(app['name']) for app in applications}

應用程序字典將為您提供類型中的應用程序計數。 這是您要找的東西嗎?

您也可以使用pandas完成此操作:

import pandas as pd
counts = pd.DataFrame(types).groupby('name').count()
application_names = {x['name'] for x in applications}
{name: counts['id'].get(name, 0) for name in application_names}

您可以使用collections.Counter來映射應用名稱以有效地鍵入計數:

from collections import Counter
counts = Counter(type['name'] for type in types)
for app in applications:
    print(f'{app["name"]} has {counts[app["name"]]} types.')

輸出:

app1 has 2 types.
app2 has 0 types.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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