Python - 当值是列表时检查字符串是否在字典值中

新手上路,请多包涵

我正在尝试解决以下问题:我创建了圣经中书籍的列表。我还创建了一个字典,它有一个键和一个值,它是对创建的列表的引用。

我想看看字典中是否存在字符串值,如果存在,则返回该值的键。

这是我的代码:

 # Dict List for bible
BIBLE_BOOKS_LIST_DICT = [
("Genesis"), ("Exodus"), ("Leviticus"),
("Numbers"), ("Deuteronomy"), ("Joshua"),
("Judges"), ("1 Samuel"), ("2 Samuel"),
("1 Kings"), ("2 Kings"), ("1 Chronicles"),
("2 Chronicles"), ("Ezra"), ("Nehemiah"),
("Esther"), ("Job"), ("Psalms"), ("Proverbs"),
("Ecclesiastes"), ("Song of Solomon"),
("Isaiah"), ("Jeremiah"), ("Lamentations"),
("Ezekiel"), ("Daniel"), ("Hosea"), ("Joel"),
("Amos"), ("Obadiah"), ("Jonah"), ("Micah"),
("Nahum"), ("Habakkuk"), ("Zephaniah"),
("Haggai"), ("Zechariah"), ("Malachi"),
("Matthew"), ("Mark"), ("Luke"), ("John"),
("Acts"), ("Romans"), ("1 Corinthians"),
("2 Corinthians"), ("Galatians"), ("Ephesians"),
("Philippians"), ("Colossians"), ("1 Thessalonians"),
("2 Thessalonians"), ("1 Timothy"), ("2 Timothy"),
("Titus"), ("Philemon"), ("Hebrews"), ("James"),
("1 Peter"), ("2 Peter"), ("1 John"), ("2 John"),
("3 John"), ("Jude"), ("Revelation")
]

# Dict for bible categories
BIBLE_BOOKS_DICT = {
'The Law':BIBLE_BOOKS_LIST_DICT[:5],
'OT History':BIBLE_BOOKS_LIST_DICT[5:16],
'Poetry':BIBLE_BOOKS_LIST_DICT[16:21],
'Major Prophets':BIBLE_BOOKS_LIST_DICT[21:26],
'Minor Prophets':BIBLE_BOOKS_LIST_DICT[26:38],
'Gospels':BIBLE_BOOKS_LIST_DICT[38:42],
'NT History':BIBLE_BOOKS_LIST_DICT[42:43],
'Pauline Epistles':BIBLE_BOOKS_LIST_DICT[43:52],
'Pastoral Letters':BIBLE_BOOKS_LIST_DICT[52:55],
'General Epistles':BIBLE_BOOKS_LIST_DICT[55:64],
'Prophecy':BIBLE_BOOKS_LIST_DICT[64:65]
}

我已经为此工作了几个小时,但还没有找到任何解决方案!我的逻辑是,

 if "Matthew" in BIBLE_BOOKS_DICT.values():
    print *the key related to that value*

谢谢!

原文由 TeaSeaPea_IP 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 377
2 个回答

这个怎么样,使用 dict.items() 方法:

 for key, value in BIBLE_BOOKS_DICT.items():
    if "Matthew" in value:
        print(key)

原文由 sjw 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您希望能够按书查找并返回类别,则需要将书作为键存储在字典中:

 BIBLE_BOOKS_DICT = {
"Matthew": 'Gosphels'
"Revelation": 'Prophecy'

# etc...

"1 John": 'Gosphels'

字典能够在非常快的运行时(例如常量)中查找给定键的值。但是要查找给定值的键,您基本上必须遍历所有值,然后将找到的值回映射到它的键。使用上面的字典,您的查找逻辑将是:

 # Look up the key, and assign its value to a variable
result = BIBLE_BOOKS_DICT.get("Matthew")

# Searched keys that don't exist in the dictionary will return None.
if result is not None:
    print result

如果其中任何一个没有意义,请告诉我,我很乐意进一步详细说明!

原文由 John Stark 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进