将列表值与Dictionary进行比较

时间:2018-02-15 21:10:13

标签: python list dictionary

我试图从可用状态(键)中随机选择一个状态:资本(值)字典列表,然后尝试匹配字典中选择的状态以返回首都。

到目前为止我的代码:

capitals = {
'Alabama' : 'Montgomery',
'Alaska' : 'Juneau',
'Arizona' : 'Phoenix',
'Arkansas' : 'Little Rock',
'California' : 'Sacramento',
'Colorado' : 'Denver',
'Connecticut' : 'Hartford',
'Delaware' : 'Dover',
'Florida' : 'Tallahassee',
'Georgia' : 'Atlanta',
'Hawaii' : 'Honolulu',
'Idaho' : 'Boise',
'Illinois' : 'Springfield'}

name_list=list(zip(capitals.keys()))
print(name_list)

from random import *
random_state=list(choice(name_list))
print(random_state)

for key,value in capitals.items():
    if random_state in  key:
        print(value)

我收到错误

  

TypeError:' in'需要字符串作为左操作数,而不是列表

如果选择的随机状态是科罗拉多

预期输出是丹佛

由于

4 个答案:

答案 0 :(得分:2)

>>> from random import choice
>>> capitals = {
...     'Alabama': 'Montgomery',
...     'Alaska': 'Juneau',
...     'Arizona': 'Phoenix',
...     'Arkansas': 'Little Rock',
...     'California': 'Sacramento',
...     'Colorado': 'Denver',
...     'Connecticut': 'Hartford',
...     'Delaware': 'Dover',
...     'Florida': 'Tallahassee',
...     'Georgia': 'Atlanta',
...     'Hawaii': 'Honolulu',
...     'Idaho': 'Boise',
...     'Illinois': 'Springfield'
... }
>>> random_state = choice(list(capitals))
>>> capitals[random_state]
'Springfield'

答案 1 :(得分:0)

你有两个问题。

首先,您没有正确生成name_list。它应该只是:

NAME_LIST = capitals.keys()

其次,生成random_state作为列表。摆脱列表(),它应该工作:

random_state =选择(NAME_LIST)

答案 2 :(得分:0)

你所拥有的所有东西似乎都可以替换,因为你只能选择一个州。

import random
print(capitals[random.choice(list(capitals))])

由于它只是一个状态,这只是直接拉回该键的值,而不是使用for循环来查看所有键。

答案 3 :(得分:0)

您得到random_state,因为tupletuple的一个元素,您尝试检查string是否包含['Florida'] in 'Alabama'的密钥。

zip

只需从代码中删除string,您就会获得字符串列表,但现在您已经有了元组列表。您的代码会检查string中是否包含:host /deep/ > * { height: 100%; }