Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从列表中添加/删除项目_Python_List - Fatal编程技术网

Python 如何从列表中添加/删除项目

Python 如何从列表中添加/删除项目,python,list,Python,List,我看到很多帖子从列表中加减字符串,但我需要帮助记录这些项目 我想耦合这些项目,所以没有重复只是一个计数器 例: 3个苹果4个桔子2个香蕉 我希望能够一次“拿走”一件物品,因此如果我打电话: “吃苹果” 然后我要检查我的库存,我会: 2个苹果4个桔子2个香蕉 我也想做相反的事情。我想“删除”一个项目,并将其添加到房间的库存中 现在我只知道如何一次摘下所有的苹果,而不是一次只摘一个。此外,我的项目从一个单独的txt文件加载到程序中,每个房间的所有项目都保存在这个文件中。考虑使用字典而不是列表。字典是

我看到很多帖子从列表中加减字符串,但我需要帮助记录这些项目

我想耦合这些项目,所以没有重复只是一个计数器

例: 3个苹果4个桔子2个香蕉

我希望能够一次“拿走”一件物品,因此如果我打电话: “吃苹果” 然后我要检查我的库存,我会: 2个苹果4个桔子2个香蕉

我也想做相反的事情。我想“删除”一个项目,并将其添加到房间的库存中


现在我只知道如何一次摘下所有的苹果,而不是一次只摘一个。此外,我的项目从一个单独的txt文件加载到程序中,每个房间的所有项目都保存在这个文件中。

考虑使用
字典
而不是
列表。字典是维护
事物的
计数的理想工具

from random import choice

def get_rooms(file_name):
    rooms = {}
    with open(file_name) as f:
        for l in f:
            room = l.split()
            room_number = int(room[0])
            rooms[room_number] = {} 
            for index, data in enumerate(room[1:], 1):
                if index % 2:
                    item = data
                else:
                    rooms[room_number][item] = int(data)
    return rooms

def generate_tests(number_of_test_actions):
    tests = []
    for _ in range(number_of_test_actions):
        tests.append((choice([1,2,3,4,5,6]),
                      choice(['Apple', 'Sword', 'Bow', 'Arrow', 'monkey']),
                      choice(['take', 'drop'])))
    return tests

def take_item(room, item):
    # generates and propagates KeyError exception if item not in room
    room[item] -= 1
    if not room[item]:
        room.pop(item)

def drop_item(room, item):
    if item in room:
        room[item] += 1
    else:
        room[item] = 1

rooms = get_rooms("rooms.txt")
for room, item, action in generate_tests(10):
    if action == 'take':
        print('taking', item, 'from room', room, ':', rooms[room])
        try:
            take_item(rooms[room], item)
        except KeyError:
            print('-- Sorry, no', item, 'in room', room, 'to take')
        else:
            print('-- took', item, 'from room', room, ':', rooms[room])                
    elif action == 'drop':
        print('dropping', item, 'in room', room, ':', rooms[room])
        drop_item(rooms[room], item)
        print('-- dropped', item, 'in room', room, ':', rooms[room])
rooms.txt

1 Sword 1 Apple 2
2 Apple 3
3 Bow 1 Arrow 3
4 Arrow 5
5 Bow 1
6 Arrow 10
taking Apple from room 3 : {'Arrow': 3, 'Bow': 1}
-- Sorry, no Apple in room 3 to take
taking Apple from room 4 : {'Arrow': 5}
-- Sorry, no Apple in room 4 to take
dropping monkey in room 6 : {'Arrow': 10}
-- dropped monkey in room 6 : {'monkey': 1, 'Arrow': 10}
dropping Apple in room 5 : {'Bow': 1}
-- dropped Apple in room 5 : {'Apple': 1, 'Bow': 1}
taking Bow from room 3 : {'Arrow': 3, 'Bow': 1}
-- took Bow from room 3 : {'Arrow': 3}
dropping monkey in room 3 : {'Arrow': 3}
-- dropped monkey in room 3 : {'monkey': 1, 'Arrow': 3}
dropping Arrow in room 6 : {'monkey': 1, 'Arrow': 10}
-- dropped Arrow in room 6 : {'monkey': 1, 'Arrow': 11}
taking Bow from room 5 : {'Apple': 1, 'Bow': 1}
-- took Bow from room 5 : {'Apple': 1}
taking Bow from room 4 : {'Arrow': 5}
-- Sorry, no Bow in room 4 to take
taking Bow from room 5 : {'Apple': 1}
-- Sorry, no Bow in room 5 to take
输出

1 Sword 1 Apple 2
2 Apple 3
3 Bow 1 Arrow 3
4 Arrow 5
5 Bow 1
6 Arrow 10
taking Apple from room 3 : {'Arrow': 3, 'Bow': 1}
-- Sorry, no Apple in room 3 to take
taking Apple from room 4 : {'Arrow': 5}
-- Sorry, no Apple in room 4 to take
dropping monkey in room 6 : {'Arrow': 10}
-- dropped monkey in room 6 : {'monkey': 1, 'Arrow': 10}
dropping Apple in room 5 : {'Bow': 1}
-- dropped Apple in room 5 : {'Apple': 1, 'Bow': 1}
taking Bow from room 3 : {'Arrow': 3, 'Bow': 1}
-- took Bow from room 3 : {'Arrow': 3}
dropping monkey in room 3 : {'Arrow': 3}
-- dropped monkey in room 3 : {'monkey': 1, 'Arrow': 3}
dropping Arrow in room 6 : {'monkey': 1, 'Arrow': 10}
-- dropped Arrow in room 6 : {'monkey': 1, 'Arrow': 11}
taking Bow from room 5 : {'Apple': 1, 'Bow': 1}
-- took Bow from room 5 : {'Apple': 1}
taking Bow from room 4 : {'Arrow': 5}
-- Sorry, no Bow in room 4 to take
taking Bow from room 5 : {'Apple': 1}
-- Sorry, no Bow in room 5 to take

查找
收藏。计数器
。这是有道理的,唯一的问题是每个房间中的物品必须以以下格式从txt文件导入://1宝剑1苹果2//2苹果3//3弓箭1箭头3//4箭头5//5弓箭1//6箭头10//1我的库存中没有物品。然后,当我进入每个房间时,我可以选择一次取下一件物品。