字符串数字以字符串格式返回

时间:2017-07-27 22:00:35

标签: python dictionary iteration key-value

以下是一些测试:

输入:"zero nine five two"

输出:"four"

输入:"four six two three"

输出:"three"

这是我的代码,直到我需要按值反向查找键的最后一步,我不知道该怎么做。有什么建议吗?

def average_string(s):
    num_dic = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 
    'six': 6, 'seven': 7, 'eight': 8, 'nine': 9}
    str_split = s.split()
    int_values = []
    for key, val in num_dic.items():
        if key in str_split: 
            int_values.append(val)
            int_avg = int(sum(int_values) / len(int_values))
    return int_avg

4 个答案:

答案 0 :(得分:1)

你可以试试这个:

height

输出:

num_dic = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9}

s = "zero nine five two"

new_dict = {b:a for a, b in num_dic.items()}

average = sum(num_dic[i] for i in s.split())/float(len(s.split()))

final_average = new_dict[average]

答案 1 :(得分:1)

为什么不利用单词列表来表示索引代表各自值的数字?

def average_string(s):
    num_list = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    str_split = s.split()
    int_sum = sum(map(num_list.index, str_split))
    return num_list[int_sum / len(str_split)]

地图遍历str_split中的每个元素,并通过使用每个元素作为参数调用num_list.index()将其转换为数字版本。

最后使用相同的num_list,使用平均值作为索引来获取字符串版本。

答案 2 :(得分:0)

以下是反转词典的方法。这是一个重复的问题:

inv_dic = {v: k for k, v in num_dic.items()}

答案 3 :(得分:0)

据我所知,没有办法按值在字典中查找。相反,您可以遍历dict以找到正确的值,如下所示:

for text, number in num_dic.iteritems():
    if number == int_avg:
        print text

以下是另一个问题:Get key by value in dictionary

您可以在Python 3中使用num_dic.items()