gpt4 book ai didi

python - 如何识别另一个列表中列表中的元素

转载 作者:行者123 更新时间:2023-12-01 06:12:02 25 4
gpt4 key购买 nike

我一直在尝试编写一段代码来查找每个项目的最大出价的索引。然后我打算使用索引来识别支付那么多钱的人的名字。然而,无论我如何尝试,我都无法将这个人和他们从拍卖中获得的东西联系在一起。这是我一直在编写的代码:它必须能够处理输入的任何信息

def sealedBids():
n = int(input('\nHow many people are in the group? '))#determines loop lengths
z = 0#meant to act as a counter in while loops
g = []#meant to store the names of all the people/players
s = []#meant to store name of all items being bidded on
b = []#meant to store all bids made
f = []#meant to store the each persons fair share
w = []#meant to store the highest bid for each item
q = []#trying to get it to store person linked to whatever they won

while z < n:#Process: to make the list nest lists
b.append([])
z = z + 1
z = 0

while z < n:
g.append(input('Enter a bidders name: '))#Input: Persons name
z = z + 1 #Process: store name in g[] list
z = 0

i = int(input('How many items are being bid on?'))#determines so loop lengths

while z < i:
s.append(input('Enter the name of an item: '))#input: Name of item
#process: stores names in s[] list
w.append(z)#was going to swap the info inside with the info I wanted
z = z + 1
z = 0
for j in range(n):#specifies which persons bid your taking
for k in range(i):#specifies which item is being bid on
b[j].append(int(input('How much money has {0} bid on the {1}? '.format(g[j], s[k]))))#input: takes bid for certain item
#process: stores bid in b[] list
print(' ')#adds a space when questions are being asked so it doesn't look crunched up

for j in range(n):#calculates fair share
f.append(sum(b[j])/n)#add a persons total bids then divides it by number of people bidding

for j in range(i):#meant to change the item after every bid is compared to stored highest bid
for k in range(n):#meant to change to a different persons bid to find out who bid the most money on a particular item
if w[j] < b[k][j]:#compares stored highest bid for particular item to each persons bid
w[j] = b[k][j]#if highest bid is smaller then highest bid changes to the bid that was larger
q.append(k)#trying to get it to store indentifier for whoever has highest bid so that I can use it later to link it with highest bid somehow
print(g)#meant to check outcome
print(s)#meant to check outcome
print(w)#meant to check outcome
print(q)#meant to check outcome
print(b)#meant to check outcome

print(f)#meant to check outcome

非常感谢任何建议。

最佳答案

您可以使用其他结构进行出价。您可以使用字典和 python 元组,而不是使用按索引同步的不同列表。也许是这样的:

items_bids = { 
item1: [ (bidder1, amount), (some_other_bidder, amount), ... ],
item2: [ (bidder1, amount), (some_other_bidder, amount), ... ],
.
.
.
}

然后检索最大。每个项目的出价都很简单:

for item, bids in items_bids.iteritems():
print max(bids, key=lambda x: x[1])

您可以以不同的方式设计数据结构,因为该数据结构可以快速插入出价,但需要更多时间来检索最高出价。此外,检索一个投标人的所有投标对计算机来说也将是更多的工作。

为了使代码更易于维护,您可以使用一些带有命名字段的对象而不是元组。

关于python - 如何识别另一个列表中列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5341799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com