Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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,I两个列表:一个是状态列表,另一个是连接列表: connection = ['Rajasthan',12,'Punjab',234,'Haryana',333,'Himchal Pradesh', 320] states = ['Delhi', 'Rajasthan'] 我想创建一个字典,将每个州的名称作为索引,如果该州的名称出现在连接列表中,则应删除该州名称以及与之一起的编号,因此,如果Rajastjan出现在连接列表中,则应将其删除,同时也应删除与之一起出现的编号12,因此摘要应如下所示:

I两个列表:一个是状态列表,另一个是连接列表:

connection = ['Rajasthan',12,'Punjab',234,'Haryana',333,'Himchal Pradesh', 320]
states = ['Delhi', 'Rajasthan']
我想创建一个字典,将每个州的名称作为索引,如果该州的名称出现在
连接
列表中,则应删除该州名称以及与之一起的编号,因此,如果
Rajastjan
出现在
连接
列表中,则应将其删除,同时也应删除与之一起出现的编号
12
,因此摘要应如下所示:

summary = {
    'State': Delhi,
    'Connection: ['Punjab',234,'Haryana',333,'Himchal Pradesh', 320],
}
summary ={
    'State': Rajasthan,
    'Connection: ['Punjab',234,'Haryana',333,'Himchal Pradesh', 320],
}
我的做法是:

connection = ['Rajasthan',12,'Punjab',234,'Haryana',333,'Himchal Pradesh', 320]
states = ['Delhi', 'Rajasthan']

summary = {}
for i in range(len(states)):
    if states[i] in connection:
        connection.remove(states[i])
        summary = {
            'name': states[i],
            'connection': connection
        }
    if states[i+1] in connection:
        connection.remove(states[i+1])
        summary = {
            'name': states[i+1],
            'connection': connection
        }
print(summary)
是的,我知道它给了我
outOfIndex
错误。有人能帮我吗

connection = ['Rajasthan',12,'Punjab',234,'Haryana',333,'Himchal Pradesh', 320]
states = ['Delhi', 'Rajasthan']

def f(c, s):
    c = iter(c)
    for conn in c:
        if conn in s:
            next(c)
            continue
        yield conn

list(f(connection, states))
['Punjab', 234, 'Haryana', 333, 'Himchal Pradesh', 320]
这将使用循环遍历
连接
列表,并跳过“匹配”后的数字(其中值位于
状态
列表中)

迭代器总是实现一个方法
iterator.\uuuu next\uuuu()
,可以使用next(迭代器)调用该方法来获取下一个值

因此,当s中存在匹配的
if conn时,我们调用
next(c)
c
中获取以下号码(我们不关心)。然后使用
continue
循环继续下一个状态名


如果该值不在
s
中,则为
yield
ed.

条件如何?如果连接中存在状态,则将其从连接中删除,然后在字典中打印。您的
摘要
字典无效,因为字典只能有唯一的键,但您多次将
状态
连接
作为键。是的,我已更新了预期的输出,但真的吗?我们不能有多个同名的密钥?我只是在问。这就是字典规范是如何定义的,它基本上是一个键、值对映射。顺便说一句,你期望的对象仍然不清楚,你不能用
摘要
对象来表示两个字典,可能你需要一个字典列表。嘿,谢谢,伙计,这会有用的,我实际上不在乎结果是在列表还是字典中。但你能不能告诉我这到底是为什么?我补充了一些解释。请随时询问是否仍不清楚。