【问题标题】:Map items in a list映射列表中的项目
【发布时间】:2019-07-26 11:11:38
【问题描述】:

我正在尝试将列表中的项目映射到字典中的键。如果它存在于dict2 的值中,则该项目映射到dict2 的键

list = ['abc','c-abc','ith','xyz']
dict2 = {'abc':['abc','ABC','c-abc'], 'xyz':['xyz']}


map=[]
for item in list:
    print(type(dict2.items()))
    for key,value in dict2.items():
        if item in value:
           map.append(key)

得到的输出:

['abc', 'abc', 'xyz']

预期输出:

['abc', 'abc', 'ith', 'xyz']

ith 不会出现在dict2 的任何值中。因此,它不会保存在map 中。但是,我想知道当item 没有出现在dict2 的任何值中时如何保存它。 当找不到地图时,我不确定如何在list 中保留该项目。

有什么建议吗?

【问题讨论】:

  • 为什么abc 会返回两次?为什么需要ith
  • 你为什么期待ith?我在dict2 = {'abc':['abc','ABC','c-abc'], 'xyz':['xyz']} 值中没有找到它
  • 您的算法工作正常,您能否更清楚地了解您要达到的目标?
  • 脚本为每个list 项目运行第二个循环,并检查list 项目是否包含在dict2s 项目的值中。如果是这种情况,则包含来自 list 的值的 dict2 项目的 key 将被添加到地图中。就像这样 list_item -> dict2_item_key abc -> abc | c-abc -> abc | ith -> None | xyz-> xyzith 不包含在dict2s 项中,因此未添加。
  • @BerkayÖz 是的,我已经更新了我的帖子。我想存储 item ,如果它没有出现在 dict2 的任何值中

标签: python list dictionary


【解决方案1】:

我相信您要做的是检查列表项是否存在于字典的值中。如果是,则将键附加到“地图”列表中,如果不是,则保留该值。

请更清楚地解释你想要什么。

list = ['abc','c-abc','ith','xyz']
dict2 = {'abc':['abc','ABC','c-abc'], 'xyz':['xyz']}


map=[]
for item in list:
    found = false
    for key,value in dict2.items():
        if item in value:
            map.append(key)
            found = true
    if not found:
        map.append(item)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-10
    • 2017-01-20
    • 2021-11-23
    • 2021-05-03
    • 2021-01-22
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多