【问题标题】:Create a new dictionary comparing to a list in python创建一个与python中的列表进行比较的新字典
【发布时间】:2017-10-29 00:32:40
【问题描述】:

我有一本字典。我想创建一个新字典,将值列表 (my_list) 与我的字典值进行比较。

我的字典,code_dict 键和值:

33003282 :['25000', '27800', 'None', '4779'], 
33003283: ['2564', '6264', '78784', '7841', '89564'], 
33003285: ['32723', '8954', '5259', '5225', '25000','04189', '8820', '2166']

我有这样的my_list

my_list = ['27800', '6264', '5225']

现在,我想将我的列表值与字典值进行比较,并创建一个具有这样值的新字典,

33003282 :['25000', 'None', '4779'], 
33003283: ['2564','78784', '7841', '89564'], 
33003285: ['32723', '8954', '5259', '25000','04189', '8820', '2166']

我以理解的方式做了以下事情,希望我能像我们在lists 中那样做:

new_dict = {key: value for value in code_dict.items()}.isin([code for code in my_list])

在字典中使用isin 不起作用,如何创建新字典?

【问题讨论】:

  • 你能解释一下你想用字典理解做什么吗?只打印值?如果是这样,请不要对此使用理解,这称为副作用,不建议使用。
  • 这似乎是一个更有趣的问题要解决,您应该通过minimal reproducible example 使用一些输入和预期输出相应地编辑您的问题。 :-)
  • 这样使用怎么样:{key: value for key,value in code_dict.items()} ?
  • 如果您只需要这些值,请使用list(code_dict.values()) 获取仅包含它们的列表。顺便说一句,没有字典isin 方法。
  • 那么,您想只保留那些 中的列表项吗?还是不是? (预期的输出会有所帮助)。

标签: python python-3.x dictionary list-comprehension


【解决方案1】:

你可以试试这个:

d = {33003282 :['25000', '27800', 'None', '4779'], 33003283: ['2564', '6264', '78784', '7841', '89564'],33003285: ['32723', '8954', '5259', '5225', '25000','04189', '8820', '2166']}
my_list = ['27800', '6264', '5225']
final_d = {a:[i for i in b if i not in my_list] for a, b in d.items()}

输出:

{33003282: ['25000', 'None', '4779'], 33003283: ['2564', '78784', '7841', '89564'], 33003285: ['32723', '8954', '5259', '25000', '04189', '8820', '2166']}

输出是一个字典,其中的值被过滤,因此my_list中不存在任何元素

【讨论】:

  • 这很整洁!我的目的不同,但似乎是要走的路!我会接受这个作为答案!
  • @i.n.n.m 很高兴为您提供帮助!
猜你喜欢
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 2022-09-23
  • 1970-01-01
  • 2019-03-24
相关资源
最近更新 更多