如何在使用元组列表的情况下迭代Python for循环并尝试打印出特定部分的数据?

如何在使用元组列表的情况下迭代Python for循环并尝试打印出特定部分的数据?

问题描述:

所以我的课程目标是向每个人分发2项不同的价值。如何在使用元组列表的情况下迭代Python for循环并尝试打印出特定部分的数据?

该程序收到一个数字和元组列表。这个数字是我选择我的第一个项目后所有的人。

挑选顺序是第一个人选择一个到最后一个,然后再选择最后一个选择,然后一直到第一个选择。

现在我正在努力的是了解如何使用循环来通过这些元组并打印出我选择的2个项目。为了弄清楚人实际上是试图多少让项目是通过利用所有可用的物品和除以2,我也由

前输入困惑:

(0, [('pizza', 12), ('chicken', 10),]) 
这个例子程序

所以应打印出: “比萨饼:12鸡:10”

+0

谢谢你的编辑 – Darkhail

要确保我得到正确的问题:

  • 有n项和N/2人
  • 列表中的第一个人获得最佳(最高值)和最差(最低值)项目。第二人得到第二和第二等等
  • 在列表中有你身后的k人,所以你在位置n/2 -k
  • 你想知道哪两个项目你得到的名单

如果你只是想知道这两个项目,你得到,你不需要循环。您可以按值排序项目,计算列表中将落入您的两个索引。他们将是N/2 - K - 1(注意,索引从零开始!),和N/2 + K:

def which_items_do_i_get(people_after_me, items): 
    # Get items sorted by value 
    sorted_items = sorted(items, key=lambda x: -x[1]) 
    # Determine number of people 
    number_of_people = len(items) // 2 
    assert len(items) % 2 == 0 # Must be an even number of items 
    assert people_after_me < number_of_people # Need more items 
    # Determine first and second item 
    first_item = sorted_items[number_of_people - people_after_me - 1] 
    second_item = sorted_items[number_of_people + people_after_me] 
    # Print them out 
    for item_name, item_value in first_item, second_item: 
     print '%s: %d' % (item_name, item_value) 
+0

是和我们的目标是显然的最好挑物品,所以你必须删除以前的人会采取的。 – Darkhail

+0

哦,我明白了。那么只需按照价值对商品进行排序即可。更新了解决方案。 –