gpt4 book ai didi

python - 对于字典,将键和值与列表中的值进行比较

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

我有以下结构:

prev = { 'alpha:10.2': '145', 'teta:180': '198', 'eltira:140': '222', 'ronta:23.14':220}
now = ['alpha:10.3','teta:180', 'eltira:142']

以及以下代码:

   old = []
for k, v in prev.iteritems():
if k not in now:
old.append(v)

因此,如果在列表 now 中找不到字典 prev 中的键,我会将值添加到 old 列表中。

结果'旧= ['145','222']`

但是,我还想检查哪个部分与 key 不对应。我倾向于使用namedtuple。

Package = collections.namedtuple('Package', 'name version')

for k, v in prev.items():
name, version = k.split(':')
Package(name=k, version='v')
  1. 如果名称对应,但版本不对应,则执行与上述相同的操作。
  2. 如果找不到名称,请将其添加到新列表old_names,但也按上述操作。

问题是 if k not in now 将不起作用。我可以用两个循环和三个 if 来完成,但也许有一个选项可以做得更干净。

预期输出:

旧=['145','222']old_names=['ronta']

最佳答案

I have splitted the 'now' list and converted it to a dictionary (name:version) which takes a single iteration. Later, the values from the dictionary can be accessed in constant time for further operations.

prev = { 'alpha:10.2': '145', 'teta:180': '198', 'eltira:140': '222', 'old:1. 43':'150'}
now = ['alpha:10.3','teta:180', 'eltira:142']

now_dict = {}
old = []
old_names = []

for items in now:
temp0,temp1 = items.split(':')
now_dict[temp0] = temp1

for k,v in prev.items():
name,version = k.split(':')
if name not in now_dict.keys():
old_names.append(name)
old.append(v)
continue

if version != now_dict[name]:
old.append(v)
continue

else:
continue

if __name__ == '__main__':
print(old_names)
print(old)

关于python - 对于字典,将键和值与列表中的值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58753121/

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