Python 字典列表问题

2024-09-29 00:14:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试配置代码以隔离这两个类别:

期望输出:

Tastiest: Limpets and Mussels
Most Involved Organism: Mussels

最美味的(食物链中不同成员所吃的食物网中的一员。)

参与最多的(与食物网中数量最多的有机体直接相关的有机体,要么因为它们吃了那个有机体,要么因为它们被那个有机体吃掉了。)

我已经为Apex、producer和flexible eaters编写了代码:

^{pr2}$

所以我的问题是,为了使这些配置成为可能,我是否会编写与我已经编写的代码类似的代码?

参考列表:

Bird eats Prawn
Bird eats Mussels
Bird eats Crab
Bird eats Limpets
Bird eats Whelk
Crab eats Mussels
Crab eats Limpets
Fish eats Prawn
Limpets eats Seaweed
Lobster eats Crab
Lobster eats Mussels
Lobster eats Limpets
Lobster eats Whelk
Mussels eats Phytoplankton
Mussels eats Zooplankton
Prawn eats Zooplankton
Whelk eats Limpets
Whelk eats Mussels
Zooplankton eats Phytoplankton

Tags: and代码类别食物crabbirdeatsprawn
1条回答
网友
1楼 · 发布于 2024-09-29 00:14:19

这似乎有效:

involvement = {}
taste = {}

for animal, prey in foodweb.items():
    involvement[animal] = involvement.get(animal, 0) + len(prey)
    for meal in prey:
        taste[meal] = taste.get(meal, 0) + 1
        involvement[meal] = involvement.get(meal, 0) + 1

by_taste = {}
by_inv = {}

for meal, rank in taste.items():
    by_taste.setdefault(rank, []).append(meal)

for critter, rank in involvement.items():
    by_inv.setdefault(rank, []).append(critter)

tastiest = by_taste[max(by_taste.keys())]
most_involved = by_inv[max(by_inv.keys())]


print 'Tastiest: ', tastiest
print 'Most Involved Organism: ', most_involved

(我把格式留给你。)

相关问题 更多 >